我目前正在使用Meteor开发一款仅限离线的移动应用。我使用HTML5本地存储来保持持久性。
我有一个模板和一个变量,一个整数
<head>
<title>counter-a</title>
</head>
<body>
{{> counts}}
</body>
<template name="counts">
<button>Click Me</button>
<p id="counts">You've pressed the button {{counts}} times.</p>
</template>
我有该模板的帮助器来设置模板变量:
Template.counts.helpers({
counts: function () {
return parseInt(localStorage.getItem("counts"));
}
});
更改本地存储中的项值的值是模板上的事件:
Template.counts.events({
'click button#increase': function () {
// increment the counter when button is clicked
localStorage.setItem("counts", parseInt(localStorage.getItem("counts")) + 1);
//instead can set counts in helper taht s template var to new value in localStorage.
counts();
},
});
使用本地存储中更新的值更改用户界面的是document.getlEmentById('counts').innerHTML = localStorage.getItem("counts");
所有操作均发生在:if(Meteor.isClient)
,且不存在if(Meteor.isServer)
。
我想知道的是,如果有一种方法可以设置不是写入模板变量的html元素的innerHTML
,而是使用代码设置模板变量的值,让Meteor自动更新gui,因为它它认为是被动的数据源,如db还是session?如何手动到达该模板变量,因为Meteor在它的反应性工作中自动完成它?
那会是这项工作的好习惯吗?由于我的助手数量除了在使用innerHTML
设置时开始时没有业务。
答案 0 :(得分:0)
您希望使用ReactiveVar
包中的reactive-var
,但不会将变量存储在本地存储中;每次将变量设置为新值时,您都需要自己这样做。
我想有人为你的特定目的建立了一个包,而dispatch:stored-var似乎也这样做了,但我从未使用它,所以我不知道。