下面是我的简单应用程序的一些部分,其中我在我的控制器中有一个功能,它过滤一些数据和一个显示它们的模板。一切都按照应有的方式工作,除非我从Chrome控制台手动更新我的灯具数据时,数据不会在模板中更新。不应该因为它与财产捆绑在一起吗?
我在Chrome控制台中要做的更新是App.Nick.FIXTURES[0]['nick'] = "new data"
//controllers/NicksController
noNick: function() {
return this.get('content').filterProperty('nick', null);
}.property('content.@each.nick')
//fixtures/nick.js
App.Nick.FIXTURES = [
{
id: "1",
nick: "test1",
},
{
id: "2",
nick: "test2",
},
{
id: "3",
nick: null,
}
];
//templates/nicks
<ul class="nav nav-tabs nav-stacked">
{{#each nick in nicks.noNick}}
<li>{{nick.nick}}</li>
{{/each}}
</ul>
答案 0 :(得分:1)
您应该将这些灯具对象视为来自服务器的模拟响应,一旦收到它们就不再与实际记录挂钩。
您需要获取对记录的引用并对已在商店中加载的记录进行修改。见Ember Data: Get a Model in the Console
BTW:使用getter和setter非常重要。
var store = App.__container__.lookup('store:main');
var nick = store.find('nick', 1);
nick.set('name', 'foo');