javascript - Ember 数据模型通过查询查找延迟?

标签 javascript ember.js ember-data

如果我有一个定义路线模型的查询:

App.MyRoute = Ember.Route.extend({
    model: function (params) {
        return this.store.find('MyModel', {myProperty: myValue}).then(function(results) {  
            return results.get('firstObject'); 
        });
    }
});

如何处理商店尚未填充上述查询结果的情况?

每当将满足查询的值插入到存储中时,我希望查询使用上述查询的结果更新模型。

这可能吗?

注意:我使用的是 FixtureAdapter,因为我没有使用 REST 后端,并且不需要持久层。因此,我自己实现了 findQuery 方法,如下所示:

App.ApplicationAdapter = DS.FixtureAdapter.extend({
    queryFixtures: function(records, query, type) {
        return records.filter(function(record) {
            for(var key in query) {
                if (!query.hasOwnProperty(key)) { continue; }
                var value = query[key];
                if (record[key] != value) { return false; }
            }
            return true;
        });
    }
});

如果这能帮助我实现这一目标,我绝对愿意改变这一点。

最佳答案

使用过滤器,它是一个实时记录数组,随着新记录注入(inject)到存储中而更新。附带说明一下,过滤器不会调用服务器来获取记录,因此如果您仍然希望发生这种情况,您仍然需要进行查找调用,然后返回过滤器。

App.MyRoute = Ember.Route.extend({
    model: function (params) {
        // trigger a find
        this.store.find('MyModel', {myProperty: myValue});
        // return a live filter (updates when the store updates)
        return this.store.filter('MyModel', function(record){
          return record.get('myProperty') == myValue;
        });
    }
});

关于javascript - Ember 数据模型通过查询查找延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21561775/

相关文章:

JavaScript - XHR - 将 SSL 证书详细信息添加到请求中

javascript - 将 Rails 路线映射到 Ember 路线

rest - 在将 ember-data 与 RESTAdapters 一起使用时,如何处理 emberJs 中的 HTTP 错误?

ember.js - 保存父模型时保存嵌入的子模型

javascript - Ember Data 在提交时不发送数据

javascript - 如何在 javascript 中编写一行窗口事件?

javascript - 如何使用 Dragula JS 插件更改拖动时复制的元素

javascript - Ember-data DS.Model 中的私有(private)变量

javascript - 在 AngularJS 中,您可以为每个元素使用不同的定义顺序来链接属性指令事件吗?

ember.js - Ember 并发超时卡在 qunit