gpt4 book ai didi

ember.js - 强制重新加载索引

转载 作者:行者123 更新时间:2023-12-02 06:11:29 24 4
gpt4 key购买 nike

我的申请有 nodes池和几个子节点( queuesservices ,...)。我需要经常访问 nodes池,我需要确保数据与后端的数据保持同步。由于多种原因,后端的数据可能会发生变化,例如:

  • 使用其他对象的副作用:后端不仅会修改受影响的对象,还会修改相关对象。例如,服务文档的更新可能会影响队列。这是在后端完成的,ember 应用程序不知道这一点。
  • 也许另一个用户在后端修改了对象,我想获得一个新的副本。

  • 通常在访问路径 #/nodes/index 时加载对象,但有时我想强制刷新商店,而不希望用户执行对正确路线的访问。如何以编程方式触发它?

    最佳答案

    使用 ember 数据,您可以使用重新加载数据。 recordArray.update() , 并使用 window.setInterval安排到您想要的时间。一个 RecordArrayModel.find() 时获取实例已解决。

    Model.find().then(function(recordArray) {
    });

    执行此操作的简单方法是使用 ember 方式,即在 model 中返回您的数据。钩子(Hook),并获取 afterModel 中的 recordArray 实例钩。所以使用这个实例来执行 update在某个特定时间使用 setInverval ,例如:
    App.NodesIndexRoute = Ember.Route.extend({
    model: function() {
    return App.Nodes.find();
    },
    afterModel: function(recordArray) {
    setInterval(function() {
    recordArray.update();
    }, 1000); //each second
    }
    });

    请注意过渡到节点索引路由,因为每次都会创建一个新的 setInterval ,并且每次转换到该路线时,事物将加载 n 倍。

    要解决此问题,请存储 setInterval 返回的 id ,并使用 clearInterval删除上一个任务:
    afterModel: function() {
    if (this.get('jobId')) {
    clearInterval(jobId);
    }
    var jobId = setInterval(function() {
    record.update()
    }, 1000); // each second
    this.set('jobId', jobId);
    }

    我创建了一个示例 here .

    关于ember.js - 强制重新加载索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18130620/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com