【问题标题】:Meteor Iron-Router: When is 'data' called?Meteor Iron-Router:什么时候调用“数据”?
【发布时间】:2015-05-29 15:12:59
【问题描述】:

这是有问题的路线:

this.route('meeting', { 
  path: '/meeting/:_id',
  template: 'meeting',
  waitOn: function(){
    console.log("iron-router: meeting waitOn");
    return Meteor.subscribe('meetings');
  },
  data: function() {
    console.log("iron-router: meeting data");
    return Meetings.findOne({"uuid":this.params._id});
  },
  onBeforeAction: OnBeforeActions.loginRequired,
  action: function () {
    console.log("iron-router: meeting action");
    if (this.ready()) {
      this.render();
    }
  }
});

meeting 模板有一个嵌套的calendar 模板,其中包含 28 个day 模板。我试图弄清楚何时/为什么调用 iron-router data 函数,因为我在加载页面时看到了这个:

iron-router: meeting waitOn
iron-router: meeting data
iron-router: meeting data
iron-router: meeting waitOn
iron-router: loginRequired
iron-router: meeting action
iron-router: meeting data
iron-router: meeting data
(28x) iron-router: meeting data

这是对同一件事的多次重复调用!为什么?

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    只要数据中的任何反应变量发生变化,就会调用数据。在您的情况下,Meetings 集合。

    当您的应用加载时,只要将集合中的每个文档添加到客户端,它就会重新运行。它最初也会运行一次以注册响应式依赖项。

    它将运行多次,如果有更改,它们将被绘制到 DOM。如果不是,它将不会继续更新 DOM。重新运行是为了检查更改。

    【讨论】:

    • 知道了——那么我应该关心这么多响应式调用的性能吗?另一种方法是专门使用 minimongo 查询来访问数据,所以可能是 6 个,6 个?
    猜你喜欢
    • 2014-05-06
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2014-12-05
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多