使用Mixins访问Ember控制器

时间:2014-01-13 21:19:37

标签: javascript ember.js ember-data

此问题与this question I asked earlier有关。我有一个Cat模型,它有一个关联的CatsController。我像这样添加了EmberCrossfilter Mixin:

App.CatsController = Ember.ArrayController.extend(EmberCrossfilter, {
  // stuff here
});

我现在想从我的索引控制器调用此控制器上的操作,并且可以这样做:

App.IndexController = Em.ObjectController.extend({
  needs: ['cats', 'dogs'],  
  actions: {   
    indexAction: function() {      
      this.get('controllers.cats').send('catAction')
      this.get('controllers.dogs').send('dogAction')
    }
  }
})

该动作被调用,但如果我查看this对象,我会得到一些没有mixin属性并且数组长度为0的东西:

__ember1389647609449: undefined
__ember1389647609449_meta: Meta
_childContainers: Object
_subControllers: Array[0]
_super: undefined
model: (...)
sortAscending: (...)
sortProperties: (...)
get sortProperties: function () {
set sortProperties: function (value) {
__proto__: Object

如果我直接从我的猫模板调用catAction方法,并查看this对象,我会看到所有mixin属性和数组长度是正确的。

@each: (...)
get @each: function () {
set @each: function (value) {
__each: Class
__ember1389647609449: "ember425"
__ember1389647609449_meta: Meta
_childContainers: Object
_crossfilter: Object
_dimensionAge: Object
_dimensionColour: Object
_dimensionCountry: Object
_dimensionCuteness: Object
_dimensionDefault: Object
_dimensionName: Object
_dimensionNameRegexp: Object
_subControllers: Array[4]
_super: undefined
content: (...)
get content: function () {
set content: function (value) {
count: (...)
get count: function () {
set count: function (value) {
model: (...)
sortAscending: (...)
sortProperties: (...)
get sortProperties: function () {
set sortProperties: function (value) {
target: Class
toString: function () { return ret; }
__proto__: Object

这在尝试从我的索引控制器调用操作时会出现问题,因为传递的CatsController没有任何mixin属性或方法。

任何人对我如何解决这个问题都有任何想法?

1 个答案:

答案 0 :(得分:2)

mixin的属性可能不会出现在对象本身上,但是如果你调用get,它将获取属性和getter / setter

http://emberjs.jsbin.com/aSIZIbu/4/edit