Session

在客户端,Session提供了一个全局对象,可以用它来保存任意的键值对。例如:保存列表中当前选中项。

Session的特殊之处在于,它是响应式的。如果在template helperTracker.autorun里调用了 Session.get("myKey"),那么无论何时调用Session.set("myKey", newValue) 都会触发相应的模板片段自动重新渲染。

Session.set(key, value)

Client

将session里键key的值设为value。并通知所有监听器:键key的值发生了变化(例如:通知那些调用Session.get获取键key值的模板helper或是autorun,重新渲染模板或是重新执行Tracker.autorun)。

Arguments

key String

The key to set, eg, selectedItem

value EJSON-able Object or undefined

The new value for key

Session.get(key)

Client

获取session里键key的值。如果是在一个响应式计算(reactive computation)内部。当通过Session.set修改键key的值时,会作废对应的计算。这个方法会返回键key值的克隆副本,所以如果键key的值是一个对象或数组,修改返回值并不会改变session里键key的值。

Arguments

key String

The name of the session variable to return

例如:

<!-- In your template -->
<template name="main">
  <p>We've always been at war with {{theEnemy}}.</p>
</template>
// In your JavaScript
Template.main.helpers({
  theEnemy: function () {
    return Session.get("enemy");
  }
});

Session.set("enemy", "Eastasia");
// Page will say "We've always been at war with Eastasia"

Session.set("enemy", "Eurasia");
// Page will change to say "We've always been at war with Eurasia"

Seesion带我们初次体会到了响应式的魅力,视图会在必要时自动更新,无需手动调用render函数。 在下一节,将会学习如何使用Tracker,一个非常轻量的库,使响应式成为可能。