【问题标题】:Meteor - Making DOM Changes from HelpersMeteor - 从 Helpers 进行 DOM 更改
【发布时间】:2015-03-21 23:36:27
【问题描述】:

从 Meteor 助手进行 DOM 更改是一种好习惯吗?我目前依靠 javascript 函数在 Meteor 助手中运行,这使得每次发生集合数据更改时都会运行该函数。

我知道有 Tracker.autorun() 但据我所知,Tracker.autorun() 仅适用于 Session 变量,不适用于收集数据更改。

到目前为止,我目前的方式并没有让我失望或造成任何问题,但我不能 100% 确定这是否是 Meteor 的用途。

代码示例

Template.page_body.helpers({
    orange: function() {
        do_some_rand_function()
        return this.name
    }
})

此代码将确保每次 this.name 更改时都会运行 do_some_rand_function()(this.name 是从 Mongo 集合中获取的变量,因此它是反应式的)。

【问题讨论】:

  • 几段代码将有助于理解您的问题!您可能想检查什么是反应变量、什么是 Session 以及什么是游标。

标签: meteor


【解决方案1】:

没有。助手不应有副作用(例如手动更新 DOM、修改数据库、发出 HTTP 请求等)。

您的描述听起来像是在呈现的回调中添加template autorun 的一个很好的用例。所有自动运行都是响应式计算,因此如果其中使用的任何响应式变量(Session、Meteor.user、Collections 等)发生变化,它们将重新运行。

试试这样的:

Template.myTemplate.onRendered(function() {
  this.autorun(function() {
    if (MyCollection.findOne()) {
      do_some_rand_function();
    }
  });
});

另请注意,模板自动运行会在模板被销毁时自动停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多