我有一个简单的应用程序,它显示一组“活动”,它的工作原理,但我想我会开始使用一些Ember视图(这是我的学习实验),而不是当前的控制器我正在使用的模板模型。处理控制器和视图之间的事件
在显示活动时,有标准视图,详细视图和隐藏/显示细节的切换开关。我认为,也许视图可以处理切换开关和隐藏/显示方面。可悲的是,这导致我到我的问题...
看来,一个视图可以捕获“点击”和其他事件,但我希望它捕捉我的活动模板的{{动作}}语句,看来行动事件跳过查看并开始查找控制器(然后是路由器)中的处理功能。是对的吗?
编纂我的问题,活动模板是如此简单:
{{#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");
}
}
});
肘节开关在活动模板定义为:
<a href="#" class="arrow"><div class="icon" {{action toggleDetails id}}></div></a>
,这是值得指出的是,每一个活动都给出下面的语句的DOM ID(用来针对与jQuery的动画比活度):
<ul class="activities " id="activity-{{unbound id}}">
在任何情况下,{ {action}}如前所述,跳过视图,而是在控制器和路由器中查找处理程序。然后 - 然后 - 调用我为了调试目的而放入的View的“click”方法。
我有点新手伊贝尔,所以任何手持你可能能够提供将不胜感激。
顺便说一句,如果我移动到另一条路线,然后返回,是这些意见重新初始化还是保持其状态? – ken
他们被重新初始化,但他们的状态可以通过模型和控制器进行管理......尝试这个[小提琴](http://jsfiddle.net/amindunited/g4HW6/)...只需在页面,你会看到页面浏览计数是独立管理的。 –