我正在尝试遍历从其他控制器获取的内容并使用forEach()
修改某些属性。然而,这不起作用和任何获得财产的尝试
在forEach
循环中返回undefined
所以这就是我试图做的事情:
this.get("controllers.index.arrangedContent")
内容是一个记录数组,与local-storage-adapter一起存储。我的模特:
App.Data = DS.Model.extend({
name: DS.attr('string')
});
在我的控制器中:
App.StartController = Ember.ObjectController.extend({
needs: 'index',
alert: function() {
// get the "content" from the IndexController;
var names = this.get("controllers.index.arrangedContent");
var formattedNames = [];
names.forEach(function(item) {
var name = item.name; // <--returns "undefined"
name += "!";
formattedNames.push(name);
});
alert(formattedNames[0] );
}
});
问题:有没有办法在forEach
循环中访问属性“name”,返回存储在模型上的正确值?
注意:首先我认为这将是本地存储适配器上的一个错误,所以我尝试使用后端的“夹具适配器”,但这也不起作用。
然而如果我在路由器上硬编码某些模型实例,如:
App.IndexRoute = Ember.Route.extend({
model: function() {
return [Ember.Object.create({id: 523, name: "John"}),
Ember.Object.create({id: 534, name: "Warren"}),
Ember.Object.create({id: 234, name: "Katy" })
];
}
});
获取forEach
循环中的name属性。使用ember-data时为什么这不起作用?
任何提示/建议都非常感谢!谢谢!
答案 0 :(得分:5)
要访问您需要始终使用访问者(获取/设置)方法的任何内容:
var name = item.get('name');
对于你想要完成的事情,有一种更好的方法:
var formattedNames = names.map(function(item, index, enumerable) {
return item.get('name') + "!";
});