我有这样的事情:
<template name ="products">
<br />
<h2>Products</h2>
<table>
<tr>
<td>Name</td>
<td>Price</td>
</tr>
{{#each products.items}}
<tr>
<td>{{name}}</td>
<td>{{price}}</td>
</tr>
{{/each}}
<tr>
<td>Total:</td><td>{{products.totalPrice}}</td>
</tr>
</table>
</template>
Template.products.helpers({
products: function () {
try {
var user = Session.get("user");
return JSON.parse(localStorage[user]); //this return*
} catch (e) {
}
}
});
*这会返回类似{totalPrice: 30, items:[{"productId1","name1","10"},{"productId2","name2","20"}]}
问题是:我需要将此信息存储在localStorage中,而不是存储在Meteor.Collection中,因为我不想去服务器直到X时刻(真的没关系)。但每当我更改localStorage值时,我都无法自动更新此内容。有没有办法做到这一点?
提前致谢。
答案 0 :(得分:4)
这就是Dependencies的用途。最简单的例子:
var array = [];
var arrayDep = new Deps.Dependency();
Template.name.helper = function() {
arrayDep.depend();
return array;
};
var change = function() {
// do things to Array contents
arrayDep.changed();
};
答案 1 :(得分:1)
将信息存储在Session
中,因为它是被动的,因此每次会话中的值发生变化时,您的模板都会更改。
您还可以使用似乎使localstorage成为反应的browser-store包。