这个问题与this earlier question I asked.有关我认为我有解决方案,但它似乎比我原先想象的要复杂得多。我已经成功地在控制器上实现了Ember Crossfilter,但是当我需要从索引控制器调用该控制器上的动作时,例如,通过执行以下操作:
App.IndexController = Em.ObjectController.extend({
needs: ['cats', 'dogs'],
actions: {
indexAction: function() {
this.get('controllers.cats').send('catAction');
this.get('controllers.dogs').send('dogAction');
}
}
});
事实证明,相应的猫狗控制器已完全重建。这可能通常不是一个大问题,但如果那些猫和狗控制器正在实现像crossfilter这样的东西,让他们重建每个动作可能效率不高。
我在这里有一个充分的例子:http://jsbin.com/IVaMUPO/6/edit?js,console,output
您可以看到,在新负载下,每个控制器都在调用_createCrossfilter
方法和_createDimensions
方法。这些是在init
方法中启动的。按下dogAction
和catAction
按钮可以达到预期效果,一切都很花哨。
问题在于,点击indexAction
时,dogAction
和catAction
都会被踢,但这会在两个控制器上再次调用init
。
这是正确的行为吗?有没有解决的办法?谢谢你的帮助。