我有一个基本的控制器,我想重新打开,所以我可以超越“需要”#39;参数,但相反,新参数会增加“需求”。参数。
例如,我的原始控制器看起来像这样:
App.MessagesController = Ember.ArrayController.extend({
needs: ['blog', 'services', 'post_edit']
});
我有一个构建过程,在另一个应用程序中包含此控制器文件,为了避免代码冗余,我希望能够重新打开控制器并根据需要对其进行小的更改,包括&#39 ;需求'参数。像这样:
App.MessagesController.reopen({
needs: ['post', 'services']
});
问题在于,当运行此代码时,需要'参数未被覆盖 - 它已被扩展。它基本上变成:needs: ['blog', 'services', 'post_edit', 'post']
有没有办法超越'需要'重新打开控制器的参数?或者总有一种更好的方法?
为清晰起见编辑:
在控制器上执行查找会显示控制台错误,该错误会显示“需要”'参数未被覆盖。
$: App.__container__.lookup('controller:Messages');
Error: <App.MessagesController:ember322> needs [ controller:blog, controller:post_edit ] but they could not be found
在“需要”中添加另一个假控制器项目&#39;重新打开参数会添加此错误消息。
答案 0 :(得分:1)
您可能希望将app 1中的功能提取到mixin中,并将其包含在控制器中。然后在两个应用程序之间共享具有共享功能的基本控制器。
//Included in both apps
App.BaseMessagesController = Ember.ArrayController.extend({
sharedValue:'foo'
});
//App 1
App.App1Mixin = Ember.Mixin.create({
needs: ['blog', 'services', 'post_edit']
});
App.MessagesController = Ember.BaseMessagesController.extend(App.App1Mixin,{
});