我正在尝试将新记录添加到Ember Data商店,并且预计会立即显示。花了几个小时试图弄清楚为什么它没有显示,并发现,将参数传递给Ember Data store.find会阻止它。
所以这段代码可行:
App.FlagsRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('flag');
}
});
App.FlagsController = Ember.ArrayController.extend({
init: function() {
this.store.createRecord('flag');
}
});
JSBin:http://jsbin.com/OxIDiVU/409/edit
正如预期的那样,正在显示表格底部的一条新记录。
当我只添加一个东西,即“查找”查询的参数时,它就会停止工作。
所以这段代码打破了新的记录:
App.FlagsRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('flag', params);
}
});
JSBin:http://jsbin.com/OxIDiVU/407/edit
新记录实际上已添加到Ember数据存储中,但未在表格中显示。
答案 0 :(得分:1)
您的问题是您正在控制器的init
功能中创建记录。在您的控制器第一次实例化之前,会调用您的路由model
挂钩,因此它不会找到记录,因为它不存在。第一个是有效的,因为使用无参数调用的find
方法返回一个在添加新记录时更新的数组。用参数调用它不会那样做。
你的init
函数无论如何都是制作唱片的好地方。你不应该在该函数中处理任何类型的持久状态。理想情况下,作为用户交互的结果,应在运行时在控制器中创建记录。如果您向我们提供有关您的用例以及您希望如何创建新标志的更多信息,我可以为您提供更多帮助。