knockout+bootstrap--一些复杂的应用合集

一、针对My97日历控件的绑定

普通绑定和特殊格式绑定(红色部分)

<!-- ko foreach: items -->
<td class="ruyeeTableTDLable"> <span>批准专业日期</span></td>
<td class="ruyeeTableDataCell">
    <div class="input-group">
        <input data-validation-engine="validate[maxSize[10]],validate[required],custom[date],"
               data-bind="attr: { id: ‘A7615‘ +$index(),value:A7615} " type="text" class="form-control">
        <div class="input-group-addon ">
            <span class="glyphicon glyphicon-calendar"
                  data-bind="attr: { onclick: ‘WdatePicker({ el:A7615‘ + $index() + ‘})‘ }">

            </span>
        </div>
    </div>
</td>
<td class="ruyeeTableTDLable"> <span>转业年份</span></td>
<td class="ruyeeTableDataCell">
    <div class="input-group">
        <input data-validation-engine="validate[maxSize[10]],validate[required],validate[date],"
               data-bind="attr: { id: ‘A7616‘ +$index(),value:A7616} " type="text" class="form-control">
        <div class="input-group-addon ">
            <span class="glyphicon glyphicon-calendar"
                  data-bind="attr: { id: ‘WP_A7616_‘ +$index()} "></span>
        </div>
    </div>
</td>
<!-- /ko -->
/// <reference path="../knockout-3.2.0.js" />
var koList;
var deletedIds = Array();
var ViewModel = function (data, func) {
    var self = this;
    self.items = ko.mapping.fromJS(data.items);
    self.struct = ko.mapping.fromJS(data.structV);
    builLeftNva(self);
    self.success = ko.observable();
    self.success.subscribe(function (nv) {
        var success = $.trim(nv);
        if (success.length > 0) {
            $(‘#success‘).modal(‘show‘);
        }
    });
    self.canSubmit = ko.observable(false);
    self.submit = function () {
        if ($("#form_id").validationEngine("validate")) {
            for (var i = 0; i < koList().length; i++) {
                //时间格式转换
                koList()[i].A7615($(‘#A7615‘ + i).val());
                koList()[i].A7616($(‘#A7616‘ + i).val());
            }
            $.ajax({
                url: postOneModelActionUrl,
                contentType: "application/json",
                type: "POST",
                data: ko.mapping.toJSON({ items: self.items, deletedIdList: deletedIds }),
                success: function (response) {
                    self.success(response.Description);
                },
                async: false
            });
        }
    };

    self.closeSuccess = function () {
        self.success(‘‘);
        $(‘#success‘).modal(‘toggle‘);
    };

    self.deleteOne = function (item) {
        self.items.remove(item);
        if (item.ID() != null) {
            deletedIds.push(item.ID());
        }
    }
    self.addNew = function () {
        //新增时的特殊处理
        var js = ko.mapping.toJS(self.struct);
        js.A7615 = getDateString();
        js.A7616 = getDateString();
        var newItem = ko.mapping.fromJS(js);
        self.items.push(newItem);
        func();
    }
    self.canSubmit(true);
    $(‘#form_id‘).validationEngine();
    koList = self.items;
    //延时处理,解决KO性能问题
    setTimeout(func, 500);
}
var refreshList = function () {
    for (var i = 0; i < koList().length; i++) {
        //时间格式转换,如果是新增的(新增的ID为null)则无需转换
        if (koList()[i].ID != null) {
            $(‘#WP_A7616_‘ + i).click(function () {
                WdatePicker({
                    dateFmt: ‘yyyy-MM‘,
                    el: $(‘#A7616‘ + this.getAttribute(‘id‘).split(‘_‘)[2]).attr(‘id‘)
                });
            })
            koList()[i].A7615(changeDateFormat(koList()[i].A7615()));
            koList()[i].A7616(changeDateFormat(koList()[i].A7616(), null, null, null, false));
        }
    }
};
$(document).ready(function () {
    $(‘#create‘).addClass(‘active‘);
    $.ajax({
        url: getStructActionUrl,
        contentType: "application/json",
        type: "POST",
        data: JSON.stringify({ A01ID: QueryString.GetValue(‘a01id‘) }),
        success: function (data) {
            ko.attach("A76Model", new ViewModel(data, refreshList));
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            switch (XMLHttpRequest.status) {
                case 401:
                    changeLocationToLogin();
                    break;
            }

        }
    });
})
时间: 2024-08-08 13:34:56

knockout+bootstrap--一些复杂的应用合集的相关文章

前端资源教程合集

综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 En类资源汇总 免费的编程中文书籍索引 前端书籍 前端免费书籍大全 前端知识体系 免费的编程中文书籍索引 智能社 - 精通JavaScript开发 重新介绍 JavaScript(JS 教程) 麻省理工学院公开课:计算机科学及编程导论 JavaScript中的this陷阱的最全收集--没有之一 JS函数式编程指南 JavaScript Promise迷你书

从零开始学数据分析,什么程度可以找到工作?( 内附20G、5000分钟数据分析工具教程大合集 )

从零开始学数据分析,什么程度可以找到工作?( 内附20G.5000分钟数据分析工具教程大合集 ) 我现在在Coursera上面学data science 中的R programming,过去很少接触过统计.计算机这两个学科,现在很想转行做数据.问题如下: 1.Data需要学到什么程度可以找工作?2.初级的数据分析会做哪些工作?3.数据分析有什么小方向吗?4.想要深度做数据分析有怎样的建议? 5.统计的学习应该从哪里下手? 本文将给你以上问题所有答案,文末还有UniCareer为大家独家整理的20

【JavaScript】 2013年度最强AngularJS资源合集

http://www.iteye.com/news/28651-AngularJS-Google-resource AngularJS是Google开源的一款JavaScript MVC框架,弥补了HTML在构建应用方面的不足,其通过使用指令(directives)结构来扩展HTML词汇,使开发者可以使用HTML来声明动态内容,从而使得Web开发和测试工作变得更加容易.  AngularJS诞生以来,吸引了大量的目光,也迅速成为了Web开发领域的新宠.本文整理了2013年度一些非常有价值的Ang

最新最全的 Android 开源项目合集

原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 Android 开发的方方面面,基本很全了.对 Android 开发感兴趣的欢迎 Star ,后续也会定期维护更新这个列表.当然,你也可以去 opendigg 上查看. -- 由欧戈分享 awesome-github-android-ui 是由OpenDigg整理并维护的安卓UI相关开源项目库集合.

前端相关网址合集

综合类 | 地址--- | --- 前端知识体系--http://www.cnblogs.com/sb19871023/p/3894452.html前端知识结构--https://github.com/JacksonTian/fks免费的编程中文书籍索引--https://github.com/justjavac/free-programming-books-zh_CN智能社 - 精通JavaScript开发--http://study.163.com/course/introduction/2

不容错过的UI设计素材大合集

免费PSD素材 TETHR by InVision 这是出自InVision的8款PSD文件,其中包含了100个模板和超过500个UI控件.来自InVision和UI8的设计师一同协作完成了这套UI Kit,非常漂亮. Designer-naut UI Kit 这是一套简约整饬的UI Kit,内置了40款矢量的小插件.这套UI Kit 为视网膜屏幕而生,基于16栏的960栅格系统,目前限时免费. Wire Kit 这是一套分辨率为840 x 8600的 UI Kit,是一套为视网膜屏幕而生的素材

常用的前端开发插件与工具合集

常用的前端开发插件与工具合集 Font Awesome字体图标插件 Font Awesome的矢量图标,将使您的网站在视网膜级的高分屏上大放异彩. 完美兼容其它框架 尽管是为Bootstrap设计,但Font Awesome同样能与其它框架完美协同运作. Font Awesome https://fontawesome.com/ SweetAlert系列(数据Ajax)插件 SweetAlert 是 JavaScript 原生 'alert' 弹窗的完美替代品... SweetAlert 让弹窗

Vim命令合集

来源:Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令 打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 ... 在vim窗口中打开一个新文件 :open file 在新窗口中打开文件 :split file 切换到下一个文件 :bn 切换到上一

[转载]VIM命令合集

Vim命令合集 http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令 打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 ..