- 浏览: 234681 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
annyliyear:
找到的ExtJS实现多选下拉框3个代码 -
yinboxian:
源码太乱了
JXTA中使用JxtaServerPipe和JxtaBiDiPipe实现双向可靠的通信 -
yinboxian:
我的peers第一次执行时可以得到正确的结果,以后就不行了。不 ...
JXTA中基于管道监听方式通信 -
cuizhenfu#gmail.com:
http://www.cnblogs.com/cuizhf
JXTA中使用JxtaServerPipe和JxtaBiDiPipe实现双向可靠的通信 -
luxing44530:
请问, jsp页面如果在 META-INF 中, 改怎么访问? ...
Servlet3.0 新特性之模块化实践
控制器安装和卸载事件句柄非常容易。卸载事件句柄对于防止内存泄漏非常重要。
自动绑定
当一个新的控制器创建后,控制器原型方法那些是事件句柄。它会把使用控制器的事件委托功能把这些函数绑定控制器上。 当这个控制器销毁(或者对应的元素从页面上删除),控制器将自动卸载它的事件句柄。 例如:以下控制器的每个函数将自动绑定:
$.Controller("Crazy",{ // listens to all clicks on this element "click" : function(el, ev){}, // listens to all mouseovers on // li elements withing this controller "li mouseover" : function(el, ev){} // listens to the window being resized "{window} resize" : function(window, ev){} })
控制器通过函数名加空间,标准的DOM事件名,Jquery专用事件名(请查看$.event.special)。
一般而言,除了没有选择器和事件不在Jquery专用事件内,控制器都会知道自动绑定事件句柄。
如果遇到上面的情况,你就需要添加这个函数名到控制器的静态listensTo属性里。 例如:
$.Controller("MyShow",{ listensTo: ["show"] },{ show: function( el, ev ) { el.show(); } }) $('.show').my_show().trigger("show");
回调函数的传递参数
事件句柄绑定是控制器在元素上回调且把事件当成参数传递过来。this引用指的是控制器实例。例如:
$.Controller("Tabs",{ // li - the list element that was clicked // ev - the click event "li click" : function(li, ev){ this.tab(li).hide() }, tab : function(li){ return $(li.find("a").attr("href")) } })
模板匹配事件绑定
模板匹配事件句柄是控制器一个非常强大的特性。你可以把事件名,选择器,或者事件的根元素参数化。 模板匹配事件名称和选择器 常常,你想要创建一个配件行为配置。一个通俗的例子是菜单显示子菜单事件(例如:点击或者鼠标进入)。 以下控制器让你配置当一个菜单想显示子菜单时的事件。 以下创建2个按钮。
$.Controller("Menu",{ "li {showEvent}" : function(el){ el.children('ul').show() } }) $("#clickMe").menu({showEvent : "click"}); $("#touchMe").menu({showEvent : "mouseenter"});
$.Controller使用双括号来替换控制器中的options对应的值。这就意味着我们可以很容易实现一个默认的showEvent值来代替上面的作法, 而且创建菜单时,不需要再提供一个值了。例如:
$.Controller("Menu", { defaults : { showEvent : "click" } }, { "li {showEvent}" : function(el){ el.children('ul').show() } }); $("#clickMe").menu(); //defaults to using click
有时,我们可能想去配置我们的配件去使用不同的元素。下面是把菜单子菜单显示事件绑定到按钮上。
$.Controller("Menu",{ "{button} {showEvent}" : function(el){ el.children('ul').show() } }) $('#buttonMenu').menu({button: "button"});
模板匹配根元素
最后,控制器的事件句柄绑定到控制器元素外的对象上。 以下是监听窗口的点击事件:
$.Controller("HideOnClick",{ "{window} click" : function(){ this.element.hide() } })
如下是监听Todos的创建事件:
$.Controller("NewTodos",{ "{App.Models.Todo} created" : function(Todo, ev, newTodo){ this.element.append("newTodos.ejs", newTodo) } });
但是上面代码只能监听Todo Model的新建Todos的动作。我们也可以把它修改为可配置的:
$.Controller("Newbie",{ "{model} created" : function(Model, ev, newItem){ this.element.append(this.options.view, newItem) } }); $('#newItems').newbie({ model: App.Models.Todo, view: "newTodos.ejs" })
那么模板匹配到底是如何实现的呢?
当查找一个值去替换双括号,控制器首先想找在options中的项,如果没有查找到,再去Window对象中查找。这里不是使用eval去查找对象。 代替它的是使用了jQuery.String.getObject,详细请看语言助手(Language helpers)下的$.String.getObject,在这里不详细介绍。
预订OpenAjax信息和自定义绑定
使用jquery/controller/subscribe插件允许控制器监听OpenAjax.hub信息。 其实这个功能很像我们Java中的订阅模式,我们只需要预订对应事件,当事件发生时,会通知所有的订阅者。 例如:
steal('jquery/controller/subscribe').then(function(){ //这个控制器既是订阅者,又是发布者 $.Controller('subscribeTest',{ onDocument: false }, { "#subscribe1 click": function(el, ev){ ev.stopPropagation(); //点击按钮,向所有订阅者发布 this.publish("oaSubscribe1", {"params":"Hola Mundo"}); }, //订阅者收到发布的处理函数 "oaSubscribe1 subscribe": function(called, data){ alert("subscribeTest " + data.params + " : " + this.Class.shortName); } }); //这个控制器只是订阅者 $.Controller('subscribeTest1',{ onDocument: false }, { //订阅者2收到发布的处理函数 "oaSubscribe1 subscribe": function(called, data){ alert("subscribeTest1 " + data.params + " : " + this.Class.shortName); } }); var subscribeController = new subscribeTest($("#testSubscribe")[0]); var subscribeController1 = new subscribeTest1($("#subscribe2")); $("#off").bind("click",function(){ subscribeController.destroy(); subscribeController1.destroy(); }) });
手动绑定事件
控制器的原型bind和delegate方法都让监听其它元素的事件。这些事件句柄将在控制器实例销毁后去绑定。
发表评论
-
test
2012-11-21 19:31 0关于请假: 1、做好工作安排,回复华为正式邮件! 2、回去 ... -
JavaScriptMVC之实战
2012-06-09 15:05 1988JavaScriptMVC之实战 下面我们通过一个真实的项目 ... -
JavaScriptMVC之快速开发
2012-04-28 21:53 4451有些同学反映说,需要看太多的篇章才能明白如何使用JavaScr ... -
JavaScriptMVC之语言助手
2012-04-26 21:00 1499在这篇文章,我只挑 ... -
JavaScriptMVC之专用事件
2012-04-26 20:32 1583JavaScriptMVC提供了一串很 ... -
JavaScriptMVC之Model
2012-04-25 22:52 2060Model顶层负责程序的数据层,使用它可以很容易做以下操作: ... -
JavaScriptMVC之View
2012-04-24 20:35 2235视图提供在JQuery中使用模板的一致接口。 当模板 ... -
JavaScriptMVC之Controller
2012-04-24 20:08 1792Controller帮助创建合理的,可释放内存,快速执行jQu ... -
JavaScriptMVC之Class
2012-04-23 20:50 1345Class提供相当继承的功能。使用Class就可以让我们结合面 ... -
JavaScriptMVC之Fixture续
2012-04-22 00:54 1253其实下面我写的主要并 ... -
JavaScriptMVC之数据处理
2012-04-21 23:42 1260常常,项目中创建,修 ... -
JavaScriptMVC之数据绑定(jquery.tie)
2012-04-20 23:14 1737如果开发过Java的RCP程序的同学就会知道数据绑定datab ... -
JavaScriptMVC之Fixture
2012-04-20 22:19 1471注:阅读这篇同学必须 ... -
从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档
2012-04-13 23:45 15531、压缩文件 在厨师手 ... -
从JavaScriptMVC开始如何完成项目之创建测试程序
2012-04-13 21:56 1068JavaScriptMVC放一个极大强调的重点在测试方面。Ja ... -
从JavaScriptMVC开始如何完成项目之创建应用程序
2012-04-12 23:56 1233如何使用JavaScriptMVC开发项目第一步,就是创建应用 ... -
JavascriptMVC 之 route 的 history功能的使用
2012-04-08 11:10 1698JavascriptMVC 之 route 的 his ... -
wijmo+javascriptmvc开发注意事项
2012-04-07 09:31 1345下面是在使用wijmo+javasc ... -
javascriptmvc之funcunit
2012-03-30 00:19 1044javascriptmvc之funcunit funcu ... -
学习jquery mvc第一天,hello
2012-03-29 23:09 2267学习jquery mvc第一天,hello 做为程序员,对于 ...
相关推荐
NULL 博文链接:https://lyndon-lin.iteye.com/blog/1556095
在JavaScriptMVC中,控制器处理DOM事件,确保应用响应用户的交互。 JavaScriptMVC 3.2.4版本可能包含以下组件: - **jQueryMX**:扩展了jQuery库,提供更强大的选择器、遍历和操作DOM的功能,以及对MVC模式的支持...
上传了一半的javascriptmvc3.0.5,这个是【下】
5. **实现控制器**:编写控制器函数或类,处理用户事件,调用模型方法,并通知视图进行更新。 6. **路由(Routing)**:如果应用有多个页面或视图,需要设置路由来管理导航。路由根据URL映射到不同的视图或控制器。...
3.3版可能增强了控制器的响应能力和事件处理机制,提高了用户体验。 6. **View**: 视图负责展示数据,通常使用模板语言生成HTML。在JavaScriptMVC 3.3中,视图可能优化了模板引擎,支持更复杂的逻辑和更高效的渲染...
JavaScriptMVC附带了一个命令行工具,用于生成项目结构、模型、控制器、视图等。这极大地提高了开发效率,确保了代码的规范性。 **测试支持** JavaScriptMVC框架内置了测试框架,如JSUnit和Jasmine,便于开发者编写...
控制器确保数据流向的单向性,避免了直接在视图和模型之间建立双向绑定,从而降低复杂性。 **JavaScript MVC框架** 一些知名的JavaScript MVC框架包括AngularJS、Backbone.js、Ember.js和Vue.js等。这些框架提供了...
JavaScriptMVC的构建离不开jQuery,一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画和Ajax交互。jQuery的使用使得JavaScriptMVC能够快速、高效地操作页面元素,提高了开发效率。 **核心组件** ...
这个框架提供了一整套工具,包括代码管理、路由、模型、视图、控制器等,以支持大型和复杂的Web应用。在“从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档”这个主题中,我们将探讨如何利用该框架进行项目...
控制器是Model和View之间的桥梁,处理用户输入并协调两者之间的交互。在JavaScript MVC中,Controller监听View的事件,如用户点击按钮,然后调用Model的方法来更新数据。同时,Controller也会响应Model的变化,更新...
3. **框架的使用**:文档可能提供如何初始化框架、创建模型、定义视图和控制器的步骤,以及如何进行数据绑定和事件处理。 4. **最佳实践**:可能涵盖编写可维护的JavaScript MVC代码的技巧,如模块化、依赖注入、...
javascriptmvc3.0.5,文件大于20MB,分成两个卷
在JavaScriptMVC中,模型处理数据和业务逻辑,视图负责展示数据,而控制器则协调模型和视图之间的交互。 2. **jQuery和JavaScriptMVC的关系** JavaScriptMVC基于jQuery库,利用jQuery的强大DOM操作和事件处理能力...
例如,在AngularJS中,控制器是通过`ng-controller`指令定义的,可以注入服务并处理用户的操作。 4. **Router**:在大型应用中,路由管理是非常关键的,它负责根据URL来加载相应的视图和控制器。例如,Ember.js和...
首先,MVC模式是软件工程中的一个经典设计模式,它将应用分为三个主要部分:Model(模型)负责处理数据和业务逻辑,View(视图)负责展示数据,而Controller(控制器)作为两者之间的桥梁,处理用户交互并更新模型或...
可将应用分成数据层、UI层和控制层。Mithril 压缩后只有 3kb 左右。API 提供一个模板引擎,带 DOM diff 实现,支持路由和组合。 示例代码: //namespace var app = {}; //model app.PageList = ...
内容索引:脚本资源,Ajax/JavaScript,JavaScriptMVC JavaScriptMVC 是一个功能强大的 JavaScript framework....JavaScriptMVC应用了模型-视图-控制器架构模式,把业务逻辑和表示分离,使得代码更加模块化。
前端MVC是指在前端开发中应用Model-View-Controller(模型-视图-控制器)架构模式的设计思想。这种架构模式来自于传统的后端开发领域,但是在前端开发中也同样适用。下面我们来详细介绍前端MVC的应用。 模型(Model...
:选择JavaScriptMVC框架很难。一方面要考虑的因素非常多,另一方面这种框架也非常多,而要从中选择一个合适的,还真得费一番心思。本文对JavaScriptMVC框架Angular、Backbone、CanJS和Ember作了比较,供大家参考。...