【发布时间】:2012-11-02 19:21:49
【问题描述】:
在下面的代码中,我的 click 事件委托和视图层次结构中的所有三个 'click' 处理程序都会被触发。
但是,我还想在我的整个视图层次结构中触发 'edit'。 'edit' 只是我的 'child' 视图中元素的目标。
模板
<script type="text/x-handlebars">
{{#view App.GrandparentView}}
{{#view App.ParentView}}
{{#view App.ChildView}}
<span {{action "edit" target="view"}}>Click Me</span>
{{/view}}
{{/view}}
{{/view}}
</script>
JavaScript
App.GrandparentView = Ember.View.extend({
click: function() {
console.log('Grandparent Click Fired!');
},
edit: function () {
console.log('GrandParent edit fired');
}
});
App.ParentView = Ember.View.extend({
click: function() {
console.log('Parent Click Fired!');
},
edit: function () {
console.log('Parent edit fired');
}
});
App.ChildView = Ember.View.extend({
click: function() {
console.log('Child Click Fired!');
},
edit: function () {
console.log('Child edit fired');
}
});
有没有办法在视图层次结构中委托目标处理程序?我不想做的是:
App.ChildView = Ember.View.extend({
click: function() {
console.log('Child Click Fired!');
},
edit: function () {
console.log('Child edit fired');
this.get('parentView').edit(); //DO NOT WANT TO DO THIS.
}
});
这里以jsFiddle 为例进行测试。
【问题讨论】:
-
如果您提供 JSFiddle,请提供一个实际运行的。提供小提琴的目的不仅仅是查看代码,而是实际使用它。如果我必须在小提琴中设置 Ember,它就达不到目的。
-
当然,我的错。重点始终是提供一个有效的 jsFiddle。我自己玩小提琴。出于某种奇怪的原因,资源被删除了。我现在已经更新了。
标签: ember.js