sendAction()
默认为预期的气泡到控制器。但我有2,3个动作,我宁愿发送到使用该组件的相应视图。在模板中,我们将操作设置为使用target=view
进行查看。我们可以这样做吗?。
更新:目前,我正在将我的视图对象发送到组件,该组件从那里调用view.send()
来发送操作。但我觉得这不正确。
答案 0 :(得分:6)
现在,由于您的组件基于视图,因此目标视图的目标是组件,您可以this.get('parentView')
获取父视图,然后链send('nameOfAction')
因此,在组件操作中它将是this.get('parentView').send('nameOfAction')
,然后它将触发嵌入组件的父视图上的操作。
因此,在您的组件中,您可以:
App.DemoCompComponent = Ember.Component.extend({
actions: {
internalTrigger: function() {
//just an alert to make sure it fired
alert('Internal action was caught on component');
//this should target parent view component is in
this.get('parentView').send('viewTriggerTest');
}
}
});
现在假设你有索引模板中的组件:
模板将是:
<script type="text/x-handlebars" data-template-name="index">
<h2>Inside Index Template</h2>
{{demo-comp}}
</script>
索引查看代码将是:
App.IndexView = Ember.View.extend({
actions: {
viewTriggerTest: function() {
alert('View Trigger Test Worked on Index!');
}
}
});
这是一个jsbin http://emberjs.jsbin.com/reyexuko/1/edit
答案 1 :(得分:0)
对于最新的Ember 2.9,建议的方法是将closure action
传递给子组件。属性target
和parentView
是私有属性。