等待模板自己的事件更改自己的助手的会话

时间:2016-06-25 20:30:41

标签: javascript jquery session meteor

Meteor客户端模板帮助程序受益于会话反应,以向浏览器提供正确的数据 相同的模板有一个click事件,它修改了这个Session,因此期望浏览器中的一些变化,然后它使用jQuery修改“新”显示。

问题是jQuery不会等到DOM准备好新显示,因此所述会话反应性还没有完成它的魔力。

如何解决这个问题?感谢

Template.checks.helpers({
  'values': function() {
    return Session.get('someVar');
  }
});

Template.checks.events({
      'click .checks-row': function(event) {
        Session.set('someVar', newArray);
        $('li').each( do things);) //<---- ops, the old list items still there
        }
      });
<template name="checks">
  {{#each values}}
  <ul class="checks-row">
    <li>{{this.label}}</li>
  </ul>
  {{/each}}
</template>

1 个答案:

答案 0 :(得分:0)

如果可能的话,我建议不要为此使用jQuery。希望你不需要它:

  1. 由于您正在设定价值,因此如果您需要阅读它们,您将会知道它们是什么。
  2. 如果正在渲染,也许可以更改模板/火焰代码。
  3. 离开jQuery有几个好处:

    1. 您不必等待DOM
    2. 防止不一致的DOM状态(Blaze不会知道jQuery正在做什么)。
    3. P.S。 Getting away from Sessions is a good idea too