快速业务通道

mvc模式分离javascript开发

作者 佚名技术 来源 网页制作 浏览 发布时间 2012-03-06
一旦数据保存了,ajax完成后会触发控制器发出另一个隐藏指令来关闭dialog

无论怎样,在有些情况下view层也能够运行它自己的方法。比如一个view页面中有一个以slide形式展示的输入框,并且允许用户提取里面内容 的时候,view会自己处理交互操作的,让slide的内容显示出来,这个时候就不需要controller(控制器)来操作这个交互了。

The Controller

现在,从 model层到view层数据是怎样获取到得呢?这就是通过controller层做的。controller激活是在事件发生以后,多半是在页面载入或 者用户发起的行为事件。一个事件处理程序被分配到一个controller(控制器)层的方法是做用户的竞标。

Controllers.EventsEdit = function(event) {
/* event is the javascript event, not our calendar event */
// grab the event target id, which stores the id
var id = event.target.id.replace(/[^d]/g, ”);
var dialog = new View.Dialog( Events.get(id) );
dialog.open();
}

当数据在在各种情况下使用的时候这种模式确实很方便。举个例子:
我们正在编辑的日历上显示的事件,我们点击删除按钮,现在需要去消除dialog(对话框)和日历上的事件,然后从服务器中删除该事件。

Controller.EventsDelete = function(event) {
var id = event.target.id.replace(/[^d]/g, ”);
View.Calendar.remove(id);
Events.del(id);
dialog.close();
}

controller的行为就变得相对容易理解和简单了。这是建立可维护应用程序的关键。

Break it up(分解它)

现在我们了解了怎样去分解我们的代码到他们的构成部分。让我们重新回来开始部分的表单验证的例子,我们怎样才能用MVC模式去设计它以达到最大灵活性。

Validating our Model(验证我们的模型)

该模型确定数据是否正确或不使用的方法。它不关心如何呈现概要的视图。它只是需要报告哪些字段没有达到水平。

以前我们做过的那个例子当中,有一个简单的变量“fields”存储了我们数据模型的元数据格式,我们能够用一个定义理解和检测被给数据的方法去扩展那个对象,该方法能够遍历所有的数据并且比对他们在内部元数据类型中定义的需求。

var MyModel = {
validate: function(data) {
var invalidFields = [];
for (var i = 0; i < data.length; i++) {
if (this.metadata[data.key].required && !data.value) {
invalidFields[invalidFields.length] = {
field: data.key,
message: data.key + ‘ is required.’
};
}
}
return invalidFields;
},
metadata: {
‘other’: {required:true}
}
}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号