Ember.js &引用;请确保此控制器已使用容器“实例化”;
所以这是可行的,但是如果您向这个控制器添加一个“needs”属性,它会给出关于没有容器的错误。这些项目控制器将观察外部控制器上的属性,因此我需要“需要”。那么我如何用容器实例化控制器。。。或者在实例化后将其破解?看起来您可以这样做Ember.js &引用;请确保此控制器已使用容器“实例化”;,ember.js,Ember.js,所以这是可行的,但是如果您向这个控制器添加一个“needs”属性,它会给出关于没有容器的错误。这些项目控制器将观察外部控制器上的属性,因此我需要“需要”。那么我如何用容器实例化控制器。。。或者在实例化后将其破解?看起来您可以这样做 var someCollectionView = Ember.CollectionView.extend({ itemViewClass: Ember.ListItemView.extend({ templateName:
var someCollectionView = Ember.CollectionView.extend({
itemViewClass: Ember.ListItemView.extend({
templateName: "foo-item",
init: function(){
var content = this.get('content');
var controller = Ember.ObjectController.extend({
// controller for individual items in the collection
actions: {
// actions specific to those items
}
}
}).create({
content: content,
});
this.set('controller', controller);
this._super();
}
})
});
访问
应用程序。通常建议不要访问容器。所有核心对象,如视图、控制器、路由,都应该由容器实例化。在这种情况下,它们还将有一个容器
属性(纯JS属性,而不是Ember属性),您可以使用该属性实例化其他对象,而这些对象反过来将访问该容器
所以不是
...
}).create({
content: content,
container: App.__container__
});
this.set('controller', controller);
this._super();
}
})
});
试一试
如果容器是未定义的,那么您必须沿着链向上移动,并确保您从中调用它的任何对象也从容器中出来
...
}).create({
content: content,
container: App.__container__
});
this.set('controller', controller);
this._super();
}
})
});
Ember.ObjectController.create(...)
this.container.lookupFactory('controller:object').create(...)