拥有一个Users_Index视图,我在其中呈现所有用户。对于每个用户,我想显示一个计算属性。我在相应的ItemController中执行此操作。代码:
// app/controllers/users/index.js
import Ember from 'ember';
export default Ember.ArrayController.extend({
itemController: 'user'
});
// app/controllers/user.js
import Ember from 'ember';
export default Ember.ObjectController.extend({
myComputedProperty: function(){
// just example nonsense here
return this.get('name') + ' and ' + this.get('id');
}.property('name', 'id')
});
// app/templates/users/index.hbs
<ul>
{{#each}}
<li>
{{myComputedProperty}}
</li>
{{/each}}
</ul>
现在我有了User_Show视图,并希望在那里使用计算属性。当然,我不想重复users/show controller
中的计算属性代码。任何人都可以给我一个暗示在Ember中分享代码的正确方法吗?混合?一个组件?将功能添加到用户模型(听起来完全错误)?
答案 0 :(得分:4)
你可以像这样创建一个mixin:
App.ComputedProperty = Ember.Mixin.Create({
myComputedProperty: function(){
// just example nonsense here
return this.get('name') + ' and ' + this.get('id');
}.property('name', 'id')
}};
然后像这样将它添加到你的控制器
App.UserController = Ember.ObjectController.extend(App.ComputedProperty, function() {
. . .
});
为API提供here。
或者,您可以将计算属性添加到用户模型中,如下所示:
App.User = DS.Model.extend({
name: DS.attr(
myComputedProperty: function(){
// just example nonsense here
return this.get('name') + ' and ' + this.get('id');
}.property('name', 'id')
});
然后,您可以在访问用户模型的每个位置访问它。