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

时间:2014-02-04 19:37:30

标签: 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;
        });
    }
});

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

1 个答案:

答案 0 :(得分:1)

使用过滤器,它是一个实时记录数组,当新记录注入商店时会更新。作为旁注,过滤器不会向服务器调用记录,因此如果您仍然希望这样做,您仍然希望仍然进行查找调用,然后只返回过滤器。

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;
        });
    }
});