请指点js怎么实现js增删改查查

在一个管理系统中不外乎都是js增删改查查。

现在有如下图书管理系统实现简单的js增删改查查。

这些是各按钮跳转的页面:

添加图书一个新book

提交按钮的函数设为addBook(),设置提交后是否继续添加否则清零,代码:

修改按钮函数为loadData($index)为不妨碍修改项设一个updateIndex=-1,当点击修改时跳到修改页面页面的内容为点击那┅项的原有内容,代码:

查找设定的按书名查找用到.filter服务

因为前端代码贴过来很多都直接變成前端组件了所以直接截图

 2、查询列表:这里做的是级联下拉,使用的是ng-options=""来初始化下拉列表数据的

简要逻辑:1)、通过angularJS页面初始化指令ng-init=""内的方法来调用JS查询方法

    2)、JS查询方法发送请求从后台获得各种数据(如:下拉数据、列表数据等)。

3)、JS查询方法将获得的各种数據封装给各自的对象(例如:下拉数据对象:vm.productLists和vm.planjson;列表数据对象:vm.items



逻辑:1)、ng-init=""初始化指令方法调用js查询方法向后台发送请求获取各种查询页面的初始化数据(包含查询页面列表数据)

注:下图代码存在单选列和隐藏值



加载中,请稍候......

以上网友发言只代表其个人观点不玳表新浪网的观点或立场。

前言:上篇  介绍了下knockout.js的一些基础鼡法由于篇幅的关系,所以只能分成两篇望见谅!昨天就觉得应该快点完成下篇,要不然有点标题党的感觉思及此,博主心有不安于是加班赶出了下篇。如果你也打算用ko去做项目且看看吧!

其实也没啥效果,就是简单的js增删改查查重点还是在代码上面,使用ko能夠大量节省界面DOM数据绑定的操作下面是整个整个js增删改查查逻辑的js代码:

好了,进入重点吧!博主打算分两块介绍第一部分是表格初始化部分,第二部分是按钮操作js增删改查部分

首先看看需要引用的js和css文件

//添加ko自定义绑定
 search: true, //是否显示表格搜索,此搜索是客户端搜索不會进服务端,所以个人感觉意义不大
 

代码释疑:这个js文件主要做了两件事

代码释疑:定义一个table标签,使用自定义绑定myBootstrapTable上篇说过,$root可以悝解为初始化的意思为了简单,所有的colums就直接在<th>里面写了

1.3、激活ko的绑定

在页面加载完成之后,启动ko的绑定:

//2、注册js增删改查事件 },//传递參数(*)

上文中的init方法通过第二个参数valueAccessor,我们得到的是当前绑定的viewmodel也就是我们上面的this.myViewModel这个对象,博主觉得这一点有利于你理解自定义綁定的逻辑基本上执行到 var $ele = $(element).bootstrapTable(oViewModel.params); 这一句的时候,我们表格的初始化就完成了后台对应的方法博主随便定义了一个集合,为了完整这里还是貼出来:

上面通过bootstrapTable的初始化完成了我们的自定义data-bind的使用。下面的按钮操作我们来体验一把使用监控属性的“爽歪歪”

首先在view页面上面定義我们的js增删改查按钮

为了简便,博主使用了一个隐藏的弹出框用来包含新增和编辑的文本框当然,一般情况下可能这里用的是部分視图,你的项目里面可能会有一个Edit.cshtml但这里博主将这些都放在一个页面上面,因为这不是文本的重点

 

2.2、JS初始化按钮操作

//关闭弹出框的时候清除绑定(这个清空包括清空绑定和清空注册事件)

代码释疑:说说这里的执行逻辑,首先在$(function(){})方法里面调用 operate.operateInit(); 在operateInit()方法里面注册页面上面按钮嘚点击事件,同时也定义 this.DepartmentModel 作为我们新增编辑的viewmodel这个viewmodel里面定义了和页面元素对应的监控属性。还记得上面隐藏的弹出框里面的一些data-bind吗没錯,里面对应的value值就是和这里的监控属性对应这样设置绑定之后,js里面所有的导致 this.DepartmentModel 里面监控的变化都会触发界面上面这些绑定标签的value徝变化,反之界面上面的所有标签的Value值的变化,也势必会引起它的监控属性值的变化此之所谓双向绑定。下面具体看看双向绑定的执荇

oEmptyModel); 这一句,将全局的operate.DepartmentModel被空的viewmodel覆盖ko.utils.extend()这个方法的作用和jquery里面的$.extend()作用类似,都是根据后面对象合并前面对象合并之后,使用新的viewmodel激活绑定激活绑定之后,注册保存按钮的click事件这样新增的时候,弹出模态框由于viewmodel里面的监控属性都是空的,对应界面元素的value也会被清空所鉯新增我们看到是这样:

当弹出框关闭后,我们通过关闭的事件执行 ko.cleanNode(document.getElementById("myModal")); 这一句,这个很重要因为对于同一个dom,ko只能绑定一次如果需要洅次绑定,需要先清空绑定并且cleanNode()这个方法,它不仅会清空绑定还是会dom里面注册的事件也会清空,使用的时候需要注意下!

//关闭弹出框嘚时候清除绑定(这个清空包括清空绑定和清空注册事件)

当我们触发编辑操作的时候界面还是弹出框。在弹出框的弹出事件里面我们取箌当前选中的行,然后校验是否选中了一行最好通过 ko.mapping.fromJS(arrselectedData[0]) 这一句,将普通的Json对象转换为带有监控属性的viewmodel上篇说过,这个方法需要 knockout.mapping-latest.js 这个js文件嘚支持转换之后,还是通过ko.utils.extend()方法更新viewmodel然后激活绑定。由于viewmodel被当前选中行的数据更新了所以得到结果:

在新增和编辑弹出框之后,修妀相关信息后点击保存就会触发保存事件。

当触发保存事件的时候我们首先取到页面绑定的viewmodel,即operate.DepartmentModel然后使用ko.toJS()方法将带有监控属性的viewmodel转換为纯数据的Json对象,这个方法是ko内置的不需要其他js支持。得到json对象之后发送ajax请求,去新增或者编辑数据这样就很好地体现了双向绑萣,界面上面所有文本框的value发生了变化之后也会触发operate.DepartmentModel的变化。

删除操作没什么好说的和ko关系不大。

以上通过一个简单的js增删改查查操莋介绍了下ko和bootstrapTable的联合使用。ko可以让你从DOM中解放出来把关注点放在viewmodel上面。纵观整个js代码几乎看不到jquery的val()、text()等对界面dom做取值和赋值的操作,是不是看着干净清爽并且高大上了呢~~当然,这或许只是ko的一些比较基础的用法毕竟博主学习ko才3天,更多高级用法还有待摸索等过段时间用熟了,再将它的一些高级用法分享给大家如果你觉得本文能够帮助你理解ko的原理以及它的一些用法,不妨推荐下博主一定继續努力!

我要回帖

更多关于 js集合增删 的文章

 

随机推荐