2013-01-16 172 views
3

我想要的DS.belongsTo关系的属性绑定这样的:绑定到关系属性

App.User = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

App.Post = DS.Model.extend({ 
    text: DS.attr('string'), 
    user: DS.belongsTo('App.User'), 

    userNameBinding: 'user.name' 
}); 

我知道这个例子是一个有点傻,但这个想法是在这里。

不幸的是,它不会(在model.js, at this line)工作:

Uncaught TypeError: Cannot call method 'send' of null

我还试图用Ember.Binding.oneWay,但它也不管用。我目前的解决方法是相当丑陋的:

App.Post = DS.Model.extend({ 
    // code omitted 

    userName: function() { 
    return this.get('user.name'); 
    }.property('user.name') 
}); 

您可以测试它in this JSFiddle

使用灰烬版本:

回答

4

有似乎是绑定到依靠init设立国有性质的错误。我提交了一个错误on the Ember issue tracker

一个不太丑陋的解决方案,你可以使用Ember.computed.alias

App.Post = DS.Model.extend({ 
    text: DS.attr('string'), 
    user: DS.belongsTo('App.User'), 

    userName: Ember.computed.alias('user.name') 
}); 

我有this JSBin工作的例子。

+0

仅供参考,这是主人,但不是pre.2的一部分。同时,@ louiscoquio的解决方法是相同的。 –