由于在我们的路径模型中添加了一个参数,我们无法再在Document ArrayController中添加新项目:
旧路线:
model: function(params) {
return this.store.find('document');
}
新路线:
queryParams: {
owner: {
refreshModel: true
}
},
model: function(params) {
var ownerID = this.get('ownerID')
return this.store.find('document', {owner : ownerID});
}
ArrayController:
actions: {
addItem: function() {
this.store.createRecord('document');
}
代码仍然加载文档,但是当调用addItem操作时,新创建的记录不会添加到ArrayController的内容中。在旧代码中,单击addItem会立即向屏幕上的文档添加新文档。我已经确认服务器正在返回一个数组,因此不确定为什么无法再添加新文档。任何帮助将不胜感激。
背景 设置是用户具有文档,但也可以查看其他用户的文档。这就是为什么我们需要动态更改文档网址中的ownerID,以便我们可以轻松显示属于特定用户的文档。
答案 0 :(得分:1)
按查询查找(find('foo', {bar:'baz'})
不是实时记录集。它只显示调用服务器返回的记录。
当您创建新的记录客户端时,Ember不知道该服务器端条件是否匹配。您需要将filter
与服务器端和客户端标准一起使用(这将调用服务器,并通过客户端过滤器继续过滤所有客户端记录)
this.store.filter('documents', {document : 'asdf'}, function(record){
return record.get('title') == 'So I Married an Axe Murderer';
});
或者如果您只是希望它始终显示所有客户端记录,您可以执行此操作
// make the call
model: function(params){
this.store.find('document', {owner : params.ownerID});
return this.store.all('document');
}