• 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);
  • 相关阅读:
    Android,资料分享(2015 版)
    Http请求与响应
    SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解
    ORA-14402: 更新分区关键字列将导致分区的更改
    Android Service的生命周期
    Android Service基础
    Android Intent 基本使用及对象构成
    Sublime Text3 个人使用心得
    深入了解line-height
    overflow之锚点技术实现选项卡
  • 原文地址:https://www.cnblogs.com/mad/p/1564902.html
Copyright © 2020-2023  润新知