我有一个名为picker的余烬视图,它负责检测div上的click和mouseMove事件。检测到这些事件后,会将相应的呼叫发送到相应的控制器。
export default Ember.View.extend({
templateName: 'picker',
click: function (event) {
this.get('controller').send('addColor', event);
},
mouseMove: function (event) {
this.get('controller').send('updateColor', event);
}
});
我的应用程序要求我使用事件对象的pageX和pageY属性执行一些逻辑,并使用div的属性(偏移,宽度,高度等)确定一些缩放因子。
应该在哪里完成这项工作?它应该包含在视图中,只是作为参数传递给操作方法,还是应该通过事件对象并使其成为控制器的责任?我的直觉说前者......
答案 0 :(得分:1)
这听起来应该包含在组件中。
您可以将mouseMove
和click
事件处理程序包装在组件中,控制器可以在这些事件触发时传递要调用的操作。例如,你可以有一个像
export default Ember.Component.extend({
click: function (event) {
this.sendAction('click');
},
mouseMove: function (event) {
this.sendAction('mouseMove');
}
});
并在模板中使用它
<div>
{{#x-picker click="addColor" mouseMove="updateColor"}}
<span> Track mousemove and click in here </span>
{{/x-picker}}
</div>