1
我有一个基本控制器,我想重新打开,这样我就可以覆盖'needs'参数,但是相反,新参数会添加'needs'参数。重新打开Ember Controller'needs'with Reopen
例如,我原来的控制器看起来是这样的:
App.MessagesController = Ember.ArrayController.extend({
needs: ['blog', 'services', 'post_edit']
});
我有一个积累的过程,包括在其他应用此控制器文件,并避免代码冗余,我希望能够重新打开控制器并根据需要进行小的更改,包括'needs'参数。像这样:
App.MessagesController.reopen({
needs: ['post', 'services']
});
问题是,当这段代码运行时,'needs'参数没有被覆盖 - 它被扩展了。它本质上变成:needs: ['blog', 'services', 'post_edit', 'post']
有没有办法覆盖重新打开控制器的'needs'参数?或者也许有更好的方法呢?
编辑为了清楚:
否则在控制器上的查找显示控制台错误,显示“需要”参数不被覆盖。
$: App.__container__.lookup('controller:Messages');
Error: <App.MessagesController:ember322> needs [ controller:blog, controller:post_edit ] but they could not be found
在重新打开时向“需要”参数中添加另一个虚假控制器项目会添加此错误消息。
该解决方案效果很好。你碰巧知道为什么重新开始推动'需求'而不是压倒一切? – yonbeastie
是的,内部重新打开只是传递属性,就好像它们是一个mixin一样,并且应用一个mixin合并needs数组(当你有一系列不同需求的mixin时,这非常有用)。 – Kingpin2k