0

希望,一个简单的问题,必须有一个简单的答案,但我已经浪费了将近 3 个小时来摆脱这个问题。

我有一个用户模型。我想从数据库加载第一个用户并在第一页加载时显示它。

我正在尝试使用的是:

在我的 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”,我只想显示这个名字。

有什么帮助???

顺便说一句,我是 EmberJS 的新手

4

1 回答 1

2

我认为这里的问题是异步的。此行:var user = App.User.find(1)将导致user尚未加载的记录;在 AJAX 调用在后台返回之前,不会设置其属性。因此,user.get('name')将是空的。

可能有几种方法可以解决这个问题。我没有过多地使用 Ember Data(因为它目前还不是很可靠),但是根据文档,应该有一个didLoad事件可以使用:

init: function() {
    var user = App.User.find(1);
    var _this = this;
    user.on('didLoad', function() {
        _this.set('defaultUser', user.get('name'));
    });
}

试试看!让我知道它是否不起作用。

于 2013-04-28T23:05:33.743 回答