2013-04-21 53 views
1

我有一个使用ember-auth的Ember.js应用程序。Ember应用程序无法绑定延迟对象

Auth.on("signInSuccess", function() { 
    App.currentUser = App.User.find(Auth.currentUserId); 
}); 

我也有一个控制器(见App.currentUser):

App.CustomersIndexController = Ember.ArrayController.extend({ 
    currentUserBinding: 'App.currentUser' 

    customers: null, 

    loadCustomers: (function() { 
    var company = this.get('currentUser').get('company'); 
    return this.set('customers', company.get('customers')); 
    }).observes('currentUser.company') 
}); 

问题:

的结合不工作,因为 “App.currentUser” 是空值。控制器在“signInSuccess”事件之前进行初始化。

“客户”应该将当前用户的公司客户作为默认值。控制器也有逻辑(从所示代码中删除),所以用户可以将“客户”设置为另一个阵列。

回答

2

您可能必须使用set方法才能正确通知观察者。

App.set('currentUser', App.User.find(Auth.currentUserId)); 
+0

控制器初始化时Auth.currentUserId为null,因为控制器的路由是第一个被访问的。 – Jacob 2013-04-22 05:06:53

+0

所以我的代码不起作用? – Myslik 2013-04-22 08:48:24

+0

对不起,我忘了回复。你的帮助是非常感谢,它的作品完美。我想我的问题更多的是一个模式问题,但也许我只需要适应所有那些制定者和获得者。 – Jacob 2013-04-22 13:15:57