2015-02-06 93 views
1

我有幾分對控制器如何需要財產的一般問題工作對於混入灰燼混入和需求屬性

可以說我有一個駐留在應用控制器購物卡模型,所以它是隨處可在應用

// application route 
export default Ember.Route.extend({ 
    setupController: function(controller, model) { 
    this._super(controller, model); 
    controller.set('cart', this.store.createRecord('cart')); 
    } 
}); 

現在,需要使用購物車的任何其他控制器,我想提供一個mixin:

// mixins/cart-access 
export default Ember.Mixin.create({ 
    needs: ['application']; 
    cart: Ember.computed.alias('controllers.application.cart') 
}); 

// some controller 
export default Ember.Controller.extend(CartAccess, {}); 

這是一個好好,但如果在另一個控制器中將需要屬性設置爲其他東西,會導致問題嗎?

// some other controller 
export default Ember.Controller.extend(CartAccess, { 
    needs: ['some-other-controller'] // not inlcuding application 
}); 

回答

3

提前做了一個實驗,來自mixin的需求將與來自控制器的需求合併。

例子:https://github.com/DVG/need-experiment

//application route 
export default Ember.Route.extend({ 
    setupController: function(controller, model) { 
    this._super(controller, model); 
    controller.set('hello', "Hi!") 
    } 
}); 

//hi mixin 
export default Ember.Mixin.create({ 
    needs: ['application'], 
    hello: Ember.computed.alias("controllers.application.hello") 
}); 

//people contntroller 
import Hi from 'needs/mixins/hi'; 
export default Ember.Controller.extend(Hi,{}); 

//posts controller 
import Hi from 'needs/mixins/hi'; 
export default Ember.Controller.extend(Hi, { 
    needs: ['something-else'] 
}); 

//posts.hbs 
{{hello}} 
{{needs}} 

的帖子模板顯示 「嗨!」和應用程序,東西 - 其他