基于 Dojo toolkit 实现 web2.0 的 MVC 模式
2010-04-13 00:00:00 来源:WEB开发网清单中的代码实现了自定义的视图刷新规则 updateView,该函数被动态绑定到 LinkPane widget 对象中。
清单 16. ProjectList 模型 .
function ProjectList(uri) {
this.uri = uri;
}
ProjectList.prototype = new taas._base.DataModel(this.uri);
Var projectListModel = new ProjectList(“http://localhost:8080/servlet/ProjectManagement”)
清单中的代码从 DataModel 抽象对象中派生出 ProjectList 对象模型以供 LinkPane 使用。
清单 17. 模型与视图绑定 .
var myLinkPane = new taas.layout.LinkPane({},”linkpane01”).
projectListModel.registerView(myLinkPane);
清单 18. controller 与远程 servlet 通信 .
<input type="button"
>
</input>
清单中代码假设我们在页面中使用了一个 button,button 的 onclick 事件调用 controller 的 remoteUpdate 方法与 Model 中对应的 servlet 通讯。
图 2 程序执行过程。Sequence 图。
第三部分 使用 dojo 的 subscribe 和 publish 方式简化代码
由于 dojo1.2 版本已经提供 subscribe/publish 消息通知机制,所以可以将 model 与 view 的关系使用 subscribe/publish 机制来简化。简化后 model 被 subscribe/publish 机制中的 topic 代替 .
下面为简化后的代码。
清单 19. 修改后的 VIEW.js
if (!dojo._hasResource["taas._base.View"]) {
dojo._hasResource["taas._base.View"] = true;
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.provide("taas._base.View");
dojo.declare("taas._base.View",null,{
_model:null,
topic:"",
_taasSrcPath:dojo.moduleUrl("taas",""),
responseObject:null,
refresh:function(object){
this.responseObject = object;
if(this.updateView!=undefined&&typeof this.updateView=="function"){
this.updateView(this.responseObject);
}
},
bindModel:function(dataModel){
this._model = dataModel;
},
_bindTopic:function(){
if(this.topic!=undefined&&this.topic!=""){
dojo.subscribe(this.topic,this,"refresh");
}
}
});
}
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››Dojo QuickStart 快速入门教程 (4) 简单的测试框架...
- ››Dojo QuickStart 快速入门教程 (5) 使用数组
- ››Dojo QuickStart Guide 快速入门 Why Dojo
- ››Dojo Quick Start Guide 快速入门 (2) 基本框架
更多精彩
赞助商链接