我知道sendAction
将从组件将动作发送到与放置该模板的模板相关联的控制器,但是在我的情况下,该组件并未直接放置在路线模板中。相反,我的组件位于视图的模板内:
<script type="text/x-handlebars" data-template-name="displayTemplate">
<h3>View</h3>
...
{{componentA}}
</script>
该组件具有与之关联的控制器:
App.ComponentAController = Ember.Controller.extend({
...
}
但是包装视图不是,它只是一个视图:
App.DisplayView = Ember.View.extend({
templateName: 'displayTemplate',
actions: {
updateData: function(data) {
/* how can I get this triggered when an action happens in the embedded componentA? I'd like to
process the data object here so I can update the wrapping view accordingly. */
}
}
...
}
如果我在组件的控制器中实现该动作,则当我sendAction('updateData', data)
在组件内执行操作时不会触发该动作。如果我在中实现它DisplayView
,也不会触发。
因此,问题是:在中触发动作时componentA
,如何将该动作发送到视图DisplayView
以进行处理?
更具体地说,我尝试将上下文数据发送到该视图,以便可以根据嵌入式组件上选择的内容对其进行更新。因此,如果还有另一种传达此数据的方式也可行。我选择动作只是因为它似乎合适,但也许不合适。
更新:实际情况
实际的代码是指网格视图,在其模板中具有分页组件。当用户切换到新页面时,分页组件向服务器发送针对所选页面的请求。
一旦返回数据,则需要让包装视图(其中包含网格)知道新数据可用。当用户单击页码时,在分页组件中处理该操作,这就是为什么我从那里进行数据调用的原因。如果需要对其他内容进行分页,则我想重用此组件,因此我不想使分页成为网格视图的一部分。
通常,您会通过target
,但组件上下文的属性名称为targetObject
。
{{foo-bar action='actionName' targetObject=view}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句