Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember Mixins和需求属性_Ember.js - Fatal编程技术网

Ember.js Ember Mixins和需求属性

Ember.js Ember Mixins和需求属性,ember.js,Ember.js,我有一个关于控制器需要属性如何处理mixin的一般性问题 假设我有一个驻留在应用程序控制器中的购物卡模型,因此它在应用程序中的任何地方都可用 // application route export default Ember.Route.extend({ setupController: function(controller, model) { this._super(controller, model); controller.set('cart', this.store

我有一个关于控制器需要属性如何处理mixin的一般性问题

假设我有一个驻留在应用程序控制器中的购物卡模型,因此它在应用程序中的任何地方都可用

// 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
});

继续并做了一个实验,来自mixin的需求将与来自控制器的需求合并

例如:

posts模板显示“Hi!”和application,以及其他内容

//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}}