EmberJS,在页面加载时加载第一个对象

时间:2013-04-28 22:40:05

标签: ruby-on-rails ember.js ember-data

希望这是一个简单的问题,必须有一个简单的答案,但我已经浪费了近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的新手

1 个答案:

答案 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'));
    });
}

试一试!如果它不成功,请告诉我。