Ember this.get('controller')返回父控制器

时间:2013-04-24 21:48:24

标签: ember.js

我有graphHolderController呈现此模板:

{{#each controller.graphs}}
  {{view sidePanelView}}
  {{view graph}}
{{/each}}

SidePanelView中,我想在SidePanelController上调用方法,但我发现在SidePanelView中,this.get('controller')会返回graphHolderController的实例。如何在SidePanelController上的SidePanelView上调用方法?

2 个答案:

答案 0 :(得分:2)

问题是{{view}}帮助器会将您传递的视图呈现为第一个参数,但绑定与父视图中相同的控制器。

如果您需要知道操作来自哪个图表,请将方法移至graphHolderController并将模型作为该操作的参数发送。

答案 1 :(得分:1)

如果您希望视图由其自己的独立控制器管理,我建议使用渲染助手:{{render sidePanel}}。这将呈现由side_panel和单身sidePanelView支持的sidePanelController模板。

如果sidePanelController需要管理特定模型的状态,请将该模型作为上下文传递:{{render sidePanel this}}(其中this表示模型)。这将生成一个新的非单例sidePanelController来管理这个模型。由于您在{{each}}块内进行渲染,我猜您想采用这种方法。

相关问题