在Meteor应用程序中使用更新的数据值更改UI

时间:2015-01-18 01:44:24

标签: meteor meteor-blaze

我目前正在使用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设置时开始时没有业务。

1 个答案:

答案 0 :(得分:0)

您希望使用ReactiveVar包中的reactive-var,但不会将变量存储在本地存储中;每次将变量设置为新值时,您都需要自己这样做。

我想有人为你的特定目的建立了一个包,而dispatch:stored-var似乎也这样做了,但我从未使用它,所以我不知道。