如果我有一个定义路线模型的查询:
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/