【问题标题】:Meteor Tracker.autorun is not calling on every updatesMeteor Tracker.autorun 不是每次更新都调用
【发布时间】:2015-12-18 17:12:29
【问题描述】:

我正在尝试使用 Meteor 排行榜的非常基本的默认应用程序。我想对页面加载的每次更新都进行一些处理。 Tracker.autorun 只是第一次调用,而不是每次更新。模板会自动刷新,但只有 Autorun 没有执行。我用自动发布和非自动发布模式测试了自动运行,但它仍然不起作用。我正在使用流星 Meteor 1.1.0.2。有什么解决办法吗?

if (Meteor.isServer) {
Meteor.publish("tasks", function () {

    return Tasks.find();


});}



if (Meteor.isClient) {

Meteor.subscribe("tasks", function () {

    console.log("On subscribe");

});

Tracker.autorun(function () {

    console.log("On Load");
});}

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    如果你想使用自动运行块,你需要在自动运行中放入触发它的反应元素。在您的情况下,它将是:

    Tracker.autorun(function () {
        var myCursor = Tasks.find().fetch();
        console.log("On Load");
    });}
    

    阅读this 以了解有关反应机制的更多信息。为了使其更简洁,您还可以将自动运行附加到您的模板(请参阅链接)

    【讨论】:

    • 还是不行。也使用了这个链接stackoverflow.com/questions/29443513/…。还是不行
    • 好吧,instance 只是他在onCreated 中用于this 的变量的名称,this 指的是模板实例。通过在控制台中输入 console.table(Tasks.find().fetch()),确保您的出版物正常工作。另请注意,仅当 已发布 数据的内容发生更改时,自动运行才会重新运行
    • Meteor.publish("tasks", function () { console.log("publishing"); return Tasks.find(); });并非每次更新都执行发布,但模板正在顺利更新
    • 您没有重新订阅,您没有重新发布是正常的,即没有看到您的“发布”日志。每次发布的数据更改时,响应性不应该重新运行发布,它应该更新返回的游标或游标数组。
    • 它通过更新 var myCursor = Tasks.find() 开始工作 var myCursor = Tasks.find().fetch();谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2023-04-11
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多