我有模特:
App.Item = DS.Model.extend({
itemId: DS.attr('string'),
itemName: DS.attr('string'),
itemType: DS.attr('string'),
});
我成功地从JSON创建了一些项目。我可以通过{{#each items}} {{itemName}} {{/ each}}将它们分页。但我不知道,如何在javascript中获取itemName。
我试过了:
var item = App.Item.find(1);
console.log(item.itemName);
- >未定义
我在emberjs和ember-data docs中找不到任何有用的东西。谁能帮我? 感谢
答案 0 :(得分:0)
我试过了:
var item = App.Item.find(1);
console.log(item.itemName);
--> undefined
这是正常的,因为对.find(1);
的调用是异步的并且返回一个承诺而不是您期望的项目。
因此你应该尝试:
App.Item.find(1).then(function(result) {
console.log(record.get('itemName'));
});
这也取决于你在做什么App.Item.find()
如果它来自一条路线,你应该等到调用afterModel
钩子才能访问你的物品:
App.FooRoute = Ember.Route.extend({
model: function() {
return App.Item.find(1);
},
afterModel: function(record) {
console.log(record.get('itemName'));
}
});
另请注意,如果您在没有参数的情况下致电find()
,那么您将收到一个RecordArray
,您需要循环才能访问您的商品。另外值得一提的是,在ember中你应该总是使用.get()
和.set()
而不是香草点符号,否则你会劫持绑定机制,导致你的视图中没有更新等。
注意,如果您使用的是最新的ember.js版本(1.0.0),那么对
.find()
的调用应该会有所不同。但是你的问题并不清楚。
希望它有所帮助。