【问题标题】:Meteor: Tracker.autorun when Iron-Router Data UpdatesMeteor:Iron-Router 数据更新时的 Tracker.autorun
【发布时间】:2014-09-29 18:47:34
【问题描述】:

我正在使用 Iron-router 的 data 函数为我的 HTML 模板提供数据。

来自 router.js 的 sn-p:

data: function() {
    liveData = {
      dataA: Collection.findOne({queryA}),
      dataB: Collection.findOne({queryB})
    };
    return liveData;
}

在我的模板中,liveData 对象是反应式的。当 Collection 发生变化时,liveData 也会发生变化 - 太棒了!

但我的问题是:我在Template.name.rendered 中有一个名为computation() 的javascript 函数,它使用liveData 对象。它在页面加载时运行一次 - 很好 - 但在页面加载后,liveData 正在发生变化,但计算并未重新运行。当iron-router的数据源liveData发生变化时,如何强制computation()重新运行?

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:
    Template.name.rendered = function(){
      this.autorun(function(){
        var data = Router.current().data();
        computation(data);
      });
    }
    

    【讨论】:

    • 谢谢!将Router.current().data() 换成liveData 对象变量就可以解决问题!
    猜你喜欢
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2017-03-06
    相关资源
    最近更新 更多