如果我有一个定义路线模型的查询:
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;
});
}
});
如果能够帮助我实现这一目标,我绝对愿意改变它。
答案 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;
});
}
});