我有一个简单的应用程序,它显示了一组“活动”并且它可以工作,但我想我会开始使用一些 Ember View(这对我来说是一个学习实验)而不是我正在使用的当前控制器模板模型现在。
在显示活动时,有标准视图、详细视图和隐藏/显示详细信息的拨动开关。我认为也许视图可以处理切换开关和隐藏/显示方面。可悲的是,这导致我的问题......
看起来视图可以捕获“点击”和其他事件,但我希望它捕获我的活动模板的 {{action}} 语句,并且动作事件似乎跳过视图并开始在控制器中查找处理函数(然后路由器)。是对的吗?
为了整理我的问题,活动模板就像这样简单:
{{#each controller}}
{{view App.ActivityView}}
{{/each}}
ActivityView 指向一个用于大部分工作的模板,但也包含操作处理程序toggleDetails
(以及click
只是为了测试目的而插入的):
App = require("app");
module.exports = App.ActivityView = Ember.View.extend({
templateName: 'activity',
isDetailHidden: true,
click: function(evt) {
// just added for debugging purposes ... this does get executed
console.log("ActivityView clicked");
},
toggleDetails: function(target) {
console.log("ActivityView pressed " + target);
this.set('isDetailHidden', !this.get('isDetailHidden')); // toggle state
target = "#activity-details-" + target;
if (this.get('isDetailHidden')) {
jQuery( target ).slideDown( "fast" );
} else {
jQuery( target ).slideUp( "fast" );
}
}
});
切换开关在Activity 模板中定义为:
<a href="#" class="arrow"><div class="icon" {{action toggleDetails id}}></div></a>
值得指出的是,每个 Activity 都有一个带有以下语句的 DOM id(用于使用 jQuery 动画定位特定的 Activity):
<ul class="activities " id="activity-{{unbound id}}">
无论如何,如前所述,{{action}} 会跳过视图并在控制器和路由器中查找处理程序。然后它——之后——调用视图的“click”方法,我只是为了调试目的而放入的。
我是一个新手 Ember,所以您可能能够提供的任何手握将不胜感激。