MVC+jQuery数据绑定①:列表绑定(三)

除了绑定Table外,还有其他的循环列表需要绑定。

其实都一样,都是把模版化成数据。 模板的存法用注释的方式只是一种方法。更好的方法自由发挥。目前就是为了取得模板。
比如 用一个Json来存放需要的Template,然后专门放在一个templates.js里或由xml配置的模板然后生成json数据, 需要用的时候直接 templates.tempName 就可以了。
写博文太累了。 特别是自己的思想给别人分享时更累。 我这里也不赘述了。贴下代码吧
复制代码
代码
; (function($) {
var templateList = []; //存放一般的模板列表

$.fn.bindList
= function(args, template, options, async) {
var me = this;

var url, async, template, dataSource;

url
= me.attr("datasource");
async
= me.attr("async") == "0";
if (arguments.length > 0) {
switch (typeof (args)) {
case "string":
url
= args;
break;
case "object":
dataSource
= args;
break;
}
}
//args是json
switch (arguments.length) {
case 1:
if (args == null)
return me;
if (typeof (args) == "string") {
url
= args;
}
else if (typeof (args) == "object") {
url
= args.url;
async
= args.async || async;
template
= args.template || template;
options
= args.options || options;
dataSource
= args.data;
}
break;
case 2: // url,async || url,tempalte || data,template
if (typeof (arguments[0]) == "string")
url
= arguments[0];
else
dataSource
= arguments[0];

if (typeof (arguments[1]) == "bool") {
async
= arguments[1];
template
= me.getTemplate();
}
break;
case 3: //url,template,async || url,template,options || data,template,options
template = template;
options
= options;
if (typeof (options) == "bool") {
async
= options;
options
= undefined;
}
break;
case 4:
template
= template;
options
= options;
async
= async;
break;
}


if ((url == undefined || url == "") && dataSource == undefined) {
return me;
}

if (dataSource == undefined) {
$.ajax({
type:
"POST",
async: async,
url: url,
success:
function(data) {

if (data == "" || data == null)
return;
data
= eval("(" + data + ")");

me.bindListData(data.list
|| data, template, options);
}
});
}
else {
me.bindListData(dataSource, template, options);
}
return me;
};
$.fn.bindListData
= function(data, template, options) {

var me = this;
template
= template || me.getTemplate();
this.empty();
var resultTemplate = replaceTemplate(template, data);


var prepend, append, dvalue;
if (options != undefined) {
prepend
= options.prepend;
append
= options.append;
dvalue
= options.dvalue;
}

if (prepend != undefined) {
resultTemplate
= prepend + resultTemplate;
}



if (append != undefined) {
resultTemplate
+= append;
}

this.html(resultTemplate);

//绑定控件的默认值
if (this.attr("type") == "select-one") {
if (dvalue != undefined)
this.bindControl(dvalue);
else
this[0].selectedIndex = 0;
}

me.setLink();

};


})(jQuery);
复制代码

 

posted @   君之蘭  阅读(1328)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示