IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定
介绍
本人菜鸟,一些自己的浅薄见解,望各位大神指正。
本框架有以下优点
1、简单(调用简单、实现简单、不过度设计)
2、视图、控制器、模型分离(分离对于维护十分有必要)
3、组件化(每一个mvc模块儿的实现都是一个组件的实现,M+V+C = 组件)
上一篇通过html文件来实现了html代码的分离,也就是视图了。
数据绑定的几种情况
载入视图以后的操作通常伴随着数据绑定
1、最简单的情况(直接替换)
<div>@{title}</div>
<div>@{content}</div>
<div>@{insTime}</div>
像这样的视图直接用正则表达式,将数据中对应的字段值替换视图中的部分就可以了,正则表达式如下。
RegExp("@{[a-z,A-Z,0-9,_]+}", "g");
2、有些是列表的循环绑定
<div>@{discussContent}</div>
<div>@{insTime}</div>
像这样的要循环这个模板产生html代码然后填充到相应位置。
var muBan = DiscussView.Get("view1");
var list = DiscussModel.GetList();
$.each(list,function(i,discuss){
muBan+=IceMx.Model.Format(muBan,discuss);
})
$(muBan).appendTo($body);
3、还有一些时候情况比较特殊,举例说明
<div>评论内容</div>
<div><textarea></textarea></div>
<div><input value='表情' onclick='Face.Show()' /><div>
如果现在要循环以上模板绑定数据,Face.Show(txtId)是一个共通方法,这个方法有一个参数txtId,该参数对应模板中的textarea的id。
那么现在问题就来了,如果在模板直接写死id的话循环出来的列表id都是一样的,肯定出问题。
解决思路是如果能在循环的同时给文本框和表情按钮都绑定一个随机的id,而且这两个id一样这样问题就能解决了。
具体的数据绑定代码如下
IceMx.Model = {
Format: function (htm, data) {
var iceTagReg = new RegExp("@{[a-z,A-Z,0-9,_]+}", "g");
var iceTag;
while (iceTag = iceTagReg.exec(htm)) {
iceTag = iceTag[0];
iceTagReg = new RegExp("@{[a-z,A-Z,0-9,_]+}", "g");
//iceId处理
var iceId = iceTag.match(/@{iceId[0-9]}/g);
if(iceId){
iceId = iceId[0];
iceId = iceId.substring(2, iceId.length - 1);
if (!data[iceId]) {
data[iceId] = IceMx.GetIceId();
}
}
//值替换
var theAttr = iceTag.substr(2, iceTag.length - 3);
var theValue = data[theAttr];
if (theValue != undefined) {
htm = htm.replace(iceTag, theValue);
} else {
htm = htm.replace(iceTag, "@@!!!!^====" + theAttr + "!!!!^!!!!@");
}
}
htm = htm.replace("@@!!!!^====", "@{");
htm = htm.replace("!!!!^!!!!@", "}");
return htm;
}
};
IceMx.GetIceId是一个获取随机id的方法
这样的话模板就可以改成这样
<div>评论内容</div>
<div><textarea id='@{iceId1}'></textarea></div>
<div><input value='表情' onclick='Face.Show(@{iceId1})' /><div>
绑定方法依然是这个
var muBan = DiscussView.Get("view1");
var list = DiscussModel.GetList();
$.each(list,function(i,discuss){
muBan+=IceMx.Model.Format(muBan,discuss);
})
$(muBan).appendTo($body);
其他
若有兴趣请关注分类下的其他文章,如果能得到您的支持将不甚感激。
IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定的更多相关文章
- IceMx.Mvc 我的js MVC 框架 三、动手来写一个评论模块儿
介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...
- IceMx.Mvc 我的js MVC 框架 开篇
开篇 这篇文章是后补的,前端时间想写一些对于js开发的一些理解,就直接写了,后来发现很唐突,所以今天在这里补一个开篇. 我的js Mvc 框架 基于实用设计,过分设计等于没设计.本着简单的原则,它只实 ...
- IceMx.Mvc 我的js MVC 框架五、完善植物大战僵尸(雏形版增加动画)
有图有真相 说明 实在找不到僵尸的素材,从网上扒了一个山寨的僵尸,只有4张的一个连续图片,所以动作有点僵硬,植物的图片是自己处理的,非专业所以……咳咳!. 背景是自己抠下来2块儿拼接的,看在这么辛苦的 ...
- IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)
介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...
- IceMx.Mvc 我的js MVC 框架四、试水植物大战僵尸(雏形版)
有图有真相 开始 最近老婆在家迷上了植物大战僵尸,每天回去躺床上就玩,有一天居然跟我说冰箱后边爬着好几只僵尸,当时我就惊呆了,后来才知道她是在说蟑螂,我去. 闲言少叙,书归正传,这是一个雏形,没有在界 ...
- IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)
话不多说,先上图 这次增加了阳光的消费和获得,增加了阳光的点击动画 重新排布了布局 有兴趣的话就研究下吧. 上一篇有朋友说让我把项目放到github上面维护,本人没用过这个,肯请朋友们帮小弟科普一下放 ...
- IceMx.Mvc 我的js MVC 框架六、完善植物大战僵尸(向日葵登场)
有图有真相,废话不多说上图 看到园友的支持很受鼓舞,更觉得应该做下去,虽然自己是个菜鸟,但也应该共享自己的心得,只要有人获益那就是值得的. 我的下载需要csdn论坛的1个积分,之所以不完全免费出去是因 ...
- MVC 中如果js,css文件放到视图文件夹无法访问的解决办法
在视图配置文件web.config 中添加如下节点,注意:此web.config 是视图文件夹中的,在你的views视图中可以找到<system.webServer>开头的<hand ...
- ECharts.js学习(二)动态数据绑定
Echarts 数据绑定 简单的统计表已经可以生成,不过之前图标数据都是直接写在参数里面的,而实际使用中,我们的数据一般都是异步读取的.EChart.js对于数据异步读取这块提供了异步加载的方法. 绑 ...
随机推荐
- ZOJ 3802 Easy 2048 Again 像缩进DP
链接:problemId=5334">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5334 题意:一个长度为5 ...
- 【LeetCode】 sort list 单清单归并
称号:Sort a linked list in O(n log n) time using constant space complexity. 思路:要求时间复杂度O(nlogn) 知识点:归并排 ...
- 对[foreach]的浅究到发现[yield]
原文:对[foreach]的浅究到发现[yield] 闲来无事,翻了翻以前的代码,做点总结,菜鸟从这里起航,呵呵. 一.List的foreach遍历 先上代码段[1]: class Program { ...
- 怎样使Android应用程序获得root权限
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 写这篇文章前,首先要感谢 Simon_fu ,他的两篇关于 root 权 ...
- Entity Framework 处理并发
Entity Framework 处理并发 在以前的两个教程你对关联数据进行了操作.本教程展示如何处理并发性.您将创建工作与各Department实体的 web 页和页,编辑和删除Department ...
- Java设计模式偷跑系列(六)Singleton模式的建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39784403 单例模式(Singleton):是一种经常使用的设计模式. 在Java应用中 ...
- 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- libvlc media player in C# (part 2)
原文 http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/ I gave some simplified VLC media play ...
- 转载:善待Redis中的数据
Redis是我们数据的保管者,我们可以随时存随时取,大的小的,重要的不重要的,它都毫无怨言的帮我们保存着,甚至有些时候,我们变得很懒,存东西进去的时候顺便还贴张纸:"过了一个星期就帮我扔了吧 ...
- PHP 调用asp.net Web Services服务问题总结
原文:PHP 调用asp.net Web Services服务问题总结 PHP是弱类型语言,转换非常不方便. < ?php //soap 客户端 $client=new SoapClient(' ...