Я попытался это:
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
, который вам нужно перебрать, чтобы получить доступ к вашим элементам. Также стоит отметить, что в уголек вы всегда должны использовать .get()
и .set()
вместо ванильного дот-нотации иначе вы угнать связывания в результате Механизм, без каких-либо обновлений в вашей точки зрения и т.д.
Примечание, если вы используете последний ember.js release (1.0.0), то вызов .find()
должен быть несколько иным. Но это не ясно из вашего вопроса.
Надеюсь, это поможет.
Вы попробовали item.get ('itemName') – Gogu
yes, now :) -> undefined –