【问题标题】:Meteor - Template.currentData() not reactive?Meteor - Template.currentData() 没有反应?
【发布时间】:2016-06-28 19:15:50
【问题描述】:

在我的一个模板中,我使用autorun 在数据上下文更改时更改一些 DOM 元素,但它从未被触发。

Template.onRendered(function () {
  this.autorun(function () {
    var someData = Template.currentData().someData;
    // some DOM manipulation
  }
}

文档指出Template.currentData():

建立对结果的反应依赖。

所以如果someData 被更改,它应该会触发重新计算,不是吗?

【问题讨论】:

    标签: javascript meteor reactive-programming meteor-blaze


    【解决方案1】:

    在做了一些研究并对reactive data sources and reactive computations和底层Tracker and Autorun有了更好的理解之后,我发现我只需要改变

    var someData = Template.currentData().someData;
    

    var currentData = Template.currentData();
    var someData = currentData.someData;
    

    所以看来只有Template.currentData()是反应式数据源,但它返回的对象的属性却不是

    使用reactive-var 可能会改变这一点。

    【讨论】:

    • 我不确定这里有什么不同。这两行代码等同于第一行。一旦你激活了Template.currentData(),你就已经在自动运行上下文中注册了一个反应依赖。应该在没有此更改的情况下调用自动运行。
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 2017-06-22
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多