gpt4 book ai didi

ember.js - Ember.Component 的 sendAction() 查看目标

转载 作者:行者123 更新时间:2023-12-02 19:02:42 25 4
gpt4 key购买 nike

默认情况下,Ember.Component 中的

sendAction() 会冒泡到 Controller ,这是预期的。但我有 2,3 个操作,我宁愿将其发送到使用该组件的相应 View 。在模板中,我们使用 target=view 设置要查看的操作。我们能做到吗?

更新:目前,作为解决方法,我将 View 对象发送到组件,该组件从那里调用 view.send() 来发送操作。但我觉得这是不正确的。

最佳答案

好吧,经过一番思考,我相信我知道你的意思。如果您有一个组件并且有一个操作,它将由组件本身处理。如果您想在组件外部发送操作,您可以使用 sendAction。

现在要定位包含您的组件的 View ,因为您的组件基于 View ,您可能可以执行 this.get('parentView') 来获取父 View ,然后链接 发送('nameOfAction')

因此,它将是来自组件操作内的 this.get('parentView').send('nameOfAction') ,然后它将触发该组件所在父 View 上的操作嵌入。

所以在你的组件中你可以有:

 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>

索引 View 代码为:

 App.IndexView = Ember.View.extend({
actions: {
viewTriggerTest: function() {
alert('View Trigger Test Worked on Index!');
}
}
});

这是一个jsbin http://emberjs.jsbin.com/reyexuko/1/edit

关于ember.js - Ember.Component 的 sendAction() 查看目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com