希望这是一个简单的问题,必须有一个简单的答案,但我已经浪费了近3个小时才能摆脱这个问题。
我有一个用户模型。我想从DB加载第一个用户并在第一页加载时显示它。
我想要使用的是:
在我的ArrayController中,
init: function(){
var user = App.User.find(1)
console.log(user);
this.set('defualtUser',user.get('name'))
}
但我不能得到用户的名字。
以下是控制台中用户的输出,表示正在加载数据,但我无法使用它。
Class
__ember1367188634172: "ember270"
__ember1367188634172_meta: Meta
_changesToSync: Object
_data: Object
attributes: Object
***name: "Cafe Alpino"***
__proto__: Object
belongsTo: Object
hasMany: Object
id: null
__proto__: Object
请参阅名称:“Cafe Alpino”,我只想显示此名称。
任何帮助???
BTW,我是EmberJS的新手
答案 0 :(得分:2)
我认为这里的问题是异步的。此行:var user = App.User.find(1)
将生成尚未加载的user
记录;在AJAX调用在后台返回之前,不会设置其属性。因此,user.get('name')
将为空。
可能有几种方法可以解决这个问题。我没有太多使用Ember Data(因为它目前不是很稳固),但根据the docmentation,你应该可以使用didLoad
事件:
init: function() {
var user = App.User.find(1);
var _this = this;
user.on('didLoad', function() {
_this.set('defaultUser', user.get('name'));
});
}
试一试!如果它不成功,请告诉我。