MVVM架构~使用boxy和knockoutjs实现编辑功能
这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验这块非常不错,下面是它的截图
aaarticlea/png;base64,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" alt="" />
说在前
在实现这个功能中,我们对knockout的基础知识一定要牢牢掌握,要知道,在knockout里一切都是对象,并且要知识knockout可以根据DIV进行绑定,对于验证这块,可以根据你的object进行验证,而并非只能验证全局对象,而对于boxy来说,
要知道它加载HTML代码的方式(如果HTML代码上有knockout绑定,则需要先将html代码加载上,然后再绑定model,这就用到了boxy的回调属性afterShow)
做在后
Html代码
<table class="listTbl">
<thead>
<tr>
<td width="100"></td>
<td>ID</td>
<td>姓名</td>
<td>电子邮件</td>
</tr>
</thead>
<tbody data-bind="foreach:UserList">
<tr>
<td>
<a href="javascript:;" data-bind="click:$parent.del">删除</a>
<a href="javascript:;" data-bind="click:$parent.edit">编辑</a>
</td>
<td data-bind="text:UserInfoID"></td>
<td data-bind="text:UserName"></td>
<td data-bind="text:Email"></td>
</tr>
</tbody>
</table>
<script type="text/html" id="editUserDiv">
<form style="width: 500px;" id="editUser" data-bind="with:selectUser">
<div class="editor-label">
账号:
</div>
<div class="editor-field">
<input type="hidden" name="UserInfoID" data-bind='value: UserInfoID' />
<input name="UserName" data-bind='value: UserName' />
</div>
<div class="editor-label">
Email:
</div>
<div class="editor-field">
<input name="Email" data-bind='value: Email' />
</div>
<div class="editor-label">
手机:
</div>
<div class="editor-field">
<input name="Phone" data-bind='value: Phone' />
</div>
<div class="editor-label">
密码:
</div>
<div class="editor-field">
<input name="Password" data-bind='value: Password' />
</div>
<div class="editor-label">
真实姓名:
</div>
<div class="editor-field">
<input name="RealName" data-bind='value: RealName' />
</div> <div style="clear: both;"></div> <p>
<input type="button" value="Save" data-bind="click:$parent.save" />
</p>
</form>
</script>
JS代码
<script type="text/ecmascript">
function toVal(obj) {
if (typeof obj == "function")
return obj();
else
return obj;
}
var Model = function () { //properies
var self = this;
ko.validation.configure({//ko.validation相关配置
insertMessages: true//不自动插入错误消息
}); self.UserList = ko.observableArray(@Html.Raw(Json.Encode(Model)));
self.selectUser = ko.observable();
//methods
self.del = function (o) { Boxy.confirm("are you sure?", function () {
$.post("/ef/DelAjaxPost?userinfoID=" + o.UserInfoID, function (data) {
alert(data == true ? "成功" : "失败");
self.UserList.remove(o);
});
});
} self.edit = function (o) {
$(".boxy-wrapper").empty()//关闭之前的弹框
new Boxy($("#editUserDiv").html(), {
afterShow: function () {//弹出框这前,绑定数据到弹框元素上
//属性验证
o.Phone = ko.observable(toVal(o.Phone)).extend({ required: true });/*先将要验证的字段变成ko对象,并添加扩展验证特性*/
o.Email = ko.observable(toVal(o.Email)).extend({ required: true });
o.RealName = ko.observable(toVal(o.RealName)).extend({ required: true });
o.Password = ko.observable(toVal(o.Password)).extend({ required: true });
o.UserName = ko.observable(toVal(o.UserName)).extend({ required: true });
//绑定对象到ko
self.selectUser(o); //绑定对象到页面
ko.applyBindings(self, document.getElementById("editUser"));
}, modal: true, title: "提示", closeText: "x"
});
} self.save = function (o) {
self.errors = ko.validation.group(o);
if (o.isValid()) { $.post("/EF/EditAjaxPost", $("form").serialize()/*这个方法必须使input有name属性,只有id属性不行*/, function (data) {
location.href = "/ef/userlist";
});
} else {
self.errors.showAllMessages();
} } }
var M = new Model();
ko.applyBindings(M);
</script>
我们看在上面的代码,很简单,其实我也是找不少资料,因为开始做的时间出现了很多意想不到的问题,不过,庆幸的是,我还是把它解决了,呵呵.
欢迎大家和我一起去学习KnockoutJS,一起去讨论关于MVVM架构的一些想法!
MVVM架构~使用boxy和knockoutjs实现编辑功能的更多相关文章
- MVVM架构~目录
回到占占推荐博客索引 MVVM在概念上是真正将页面与数据逻辑分离的模式,在开发方式上,它是真正将前台代码开发者(JS+HTML)与后台代码开发者分离的模式(asp,asp.net,php,jsp).在 ...
- MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
返回目录 本文章应该是knockoutjs系列的最后一篇了,前几篇中主要讲一些基础知识,这一讲主要是一个实际的例子,对于一个对象的添加与编辑功能的实现,并将项目源代码公开了,共大家一起学习! knoc ...
- MVVM架构~Knockoutjs系列之验证机制的引入
返回目录 对于Knockoutjs本身来说,没有提供验证模块,不过,有第三方的扩展,就像你为jquery库作extensions一样,这讲中我将介绍一个Knockout插件扩展,knockout.va ...
- MVVM架构~mvc,mvp,mvvm大话开篇
返回目录 百度百科的定义: MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新 ...
- [转]MVVM架构~mvc,mvp,mvvm大话开篇
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...
- ReactiveCocoa常见操作方法介绍/MVVM架构思想
1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中, ...
- MVVM架构的一次实践,重写iOS头条客户端
前言: 一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便.用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题 ...
- WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)
到现在为止,我们创建了一个简单的MVVM的例子,包含了实现了的属性和命令.我们现在有这样一个包含了例如textbox类似的输入元素的视图,textbox用绑定来和view model联系,像点击but ...
- iOS MVVM架构总结
为什么使用MVVM iOS中,我们使用的大部分都是MVC架构.虽然MVC的层次明确,但是由于功能日益的增加.代码的维护,使得更多的代码被写在了Controller中,这样Controller就显得非常 ...
随机推荐
- selenium-pageobject设计模式
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom time import sleepfrom ...
- 安卓开发:DateUtils
public class DateUtils{ /** * 显示友好时间 * * @param ms * @return */ public static String getTimeDes(long ...
- 【fortify】安全漏洞的分类
https://vulncat.hpefod.com/zh-cn 下面摘要著名的软件安全专家Gary Mc Graw的2006年的新书<Software Security building se ...
- TCP头部结构
3.2 TCP头部结构 TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口,目的端端口,管理TCP连接等,本节详细介绍TCP的头部结构,包括固定头部结构和头部选项. 3.2.1 TCP固定 ...
- maven 搜索不到想从本地仓库依赖的jar包--重建本地maven仓库索引
问题:有时候本地仓库有相关的jar包,但是在pom.xml中利用工具搜索不到 菜单栏设置显示Maven Respositorise视图:Windows--Show View--Other.. (对 ...
- C#的对象赋值
例如 Class A { int x = 0; int y = 0; } public void test() { A test1 = new A( ); ...
- 不常用的toLocaleString()方法
在javascript中所有的对象都具有toLocaleString().toString()和valueOf()方法. 其中,很多情况调用toString()和valueOf方法会返回相同的值,但是 ...
- java-API中的常用类,新特性之-泛型,高级For循环,可变参数
API中的常用类 System类System类包含一些有用的类字段和方法.它不能被实例化.属性和方法都是静态的. out,标准输出,默认打印在控制台上.通过和PrintStream打印流中的方法组合构 ...
- 如何在Windows中编译Linux Unix的代码(采用cygwin)?
来源:http://www.cnblogs.com/rocky_yi/archive/2009/12/08/cygwin.html 作者:rocky_y 很多经典算法往往是用C++在linux下实 ...
- 美帝的emal to message gateway
Provider Email to SMS Address Format AllTel number@text.wireless.alltel.com AT&T number@txt.att. ...