概述
控制器是处理特定页面上特定功能的特殊模块。它们不一定可以在不同的上下文中重用,尽管有些可能可以。控制器在单个元素上初始化,该元素成为控制器的范围.控制器响应用户事件(例如点击)以及由UI小部件或子控制器触发的事件,并操纵其范围元素。
控制器功能的范围是完全灵活的。控制器可以在页面的一个非常小的片段上初始化,并只执行一项任务,也可以在应用于整个页面的主包装器和句柄功能上初始化。控制器可以在一个元素上初始化,即使它是另一个元素的后代这是一种常见的模式,子控制器可以发出父控制器可以响应的事件。
通常,让控制器只关注页面的一个方面。如果一个控制器最终处理的是不同且不相关的功能,那就把它拆分成更小的控制器。
创建一个控制器
控制器的注册方式与标准模块略有不同;相反,将对象文字传递给方法ips.controller.register:
;(作用($,_,未定义的){“严格使用”;ips.控制器.登记(“type.controllerID”,{初始化:作用(){//控制器事件在这里初始化}});} (jQuery,_));
至少是一个控制器,必须定义一个初始化方法,当控制器在元素上初始化时调用该方法。这个初始化方法应设置仅由该控制器处理的事件;如果需要其他初始化任务,建议定义设置方法,并在初始化方法。
在控制器定义中,这指控制器实例。这意味着可以使用在内部调用控制器方法this.someMethod()。
对初始化控制器的元素的引用(其)范围)可用范围属性:
//隐藏元素的例子这.范围.隐藏();
方法和属性名
为清晰起见,建议使用事件处理程序方法名(例如,在初始化)没有下划线前缀,而控制器的其他方法和属性则有下划线前缀。这有助于明确区分控制器的核心功能(事件处理程序)和支持方法。
处理事件
事件处理是控制器的核心功能。有三种特殊的方法可用于观察和触发事件。其中两个以它们的jQuery对应对象命名,但添加了特定于控制器的行为。
这是我的
用于观察和响应事件。
这.在([元素初步的,]字符串事件类型(,选择器代表],作用回调);
- 初步的
对将监视事件的元素的引用。如果不指定,this.scope默认使用。 - 事件类型
正在关注的事件。这可以是默认的浏览器事件,如点击,或来自小部件和模型的事件,例如menuItemSelected. - 代表
可以选择指定委托选择器。看到jQuery文档为更多的信息。 - 回调
一个回调函数,当观察到此事件时调用。这里指定的函数是自动绑定到这,因此内部方法可以通过简单的引用来传递,如下所示:这.在(“点击”,这.internalMethod);
this.trigger
用于发出起源于此控制器的事件(特别是范围元素)。
这.触发([元素初步的,]字符串事件类型(,对象数据]);
- 初步的
对将触发事件的元素的引用。如果未指定,this.scope默认使用。 - 事件类型
事件被触发。 - 数据
一个包含与事件相关数据的对象。
这是triggerOn
用于从父控制器直接在子控制器上发出事件。
这.三角龙(字符串controllerName,字符串事件类型(,对象数据]);
- controllerName
要查找并触发事件的控制器名称。该参数后面支持通配符*,所有匹配的控制器都会触发该事件。例子:core.front.core.comment core.front.core.*core*
- 事件类型
事件被触发。 - 数据
一个包含与事件相关数据的对象。
报告指南