2013-04-28 75 views
0

希望,一个简单的问题,必须有一个简单的答案,但我已经浪费了近3小时摆脱这个问题。EmberJS,加载页面加载第一个对象

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

什么,我试图使用方法是:

在我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

回答

2

一个新手,我觉得这里的问题是asynchronousy。该行:var user = App.User.find(1)将导致尚未加载的user记录;它的属性在AJAX调用在后台返回之前不会被设置。因此,user.get('name')将为空。

可能有几种方法可以解决这个问题。我没有用灰烬数据太多(因为它不是此刻非常稳固),但根据the docmentation,应该有一个didLoad事件,您可以使用:

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

试试看吧!让我知道如果它不工作。

+0

谢谢你,为之工作。我想知道,在发布这个问题之前,我确实尝试了这个东西。 但我犯了一个错误。 this.set( 'defaultUser',test.get( '存储')得到( '名')); – 2013-04-29 07:32:42

+0

假设我不想在App.User.find(1)中将user_id硬编码为1。我如何传递到觉得是动态的,因此,如果与任何类型的ID 1 0R ID 3或ID 55是传入查找的用户,它不会失败的ID。有什么建议么。谢谢。 – brg 2013-04-30 17:14:03

+0

@brg你应该看看emberjs.com上的指南。 http://emberjs.com/guides/routing/defining-your-routes/#toc_dynamic-segments – Christoffer 2013-05-01 22:00:28