Knockout结合Bootstrap创建动态UI实现产品列表管理


Posted in Javascript onSeptember 14, 2016

本篇文章结合Bootstrap创建一个比较完整的应用,对产品列表进行管理,包括产品的增加、删除、修改。 

需要的引用 

<script type='text/javascript' src='http://www.see-source.com/js/knockout-2.2.0.js'></script>
<script type='text/javascript' src='http://www.see-source.com/js/jquery-1.6.2.min.js'></script>
<link href="http://www.see-source.com/bootstrap/css/bootstrap.css" rel="stylesheet">

Html代码 

<body>
<!-- 动态生成产品列表 -->
<table class="table table-bordered">
 <thead>
  <tr>
   <th>ID</th>
   <th>产品名称</th>
   <th>原价</th>
   <th>促销价</th>
   <th>操作</th>
  </tr>
 </thead>
 <tbody data-bind="foreach: products">
  <tr > 
   <td> 
   <span data-bind="text: $data.Id"></span> 
   </td> 
   <td> 
   <input type="text" data-bind="value: $data.Name"/> 
   </td> 
   <td>
   <input type="text" data-bind="value: $data.Price"/> 
   </td> 
   <td> 
   <input type="text" data-bind="value: $data.ActualCost"/> 
   </td> 
   <td> 
   <input type="button" class="btn" value="修改" data-bind="click: $root.update"/> 
   <input type="button" class="btn" value="删除" data-bind="click: $root.remove"/> 
   </td> 
  </tr> 
 </tbody>
</table>
<!-- 产品添加form -->
<form class="form-horizontal" data-bind="submit:$root.create">
  <fieldset>
   <legend>添加产品</legend>
   <div class="control-group">
   <label class="control-label" for="input01">产品名称</label>
   <div class="controls">
    <input type="text" name="Name" class="input-xlarge">
   </div>
   </div>
   <div class="control-group">
   <label class="control-label" for="input01">原价</label>
   <div class="controls">
    <input type="text" name="Price" class="input-xlarge">
   </div>
   </div>
   <div class="control-group">
   <label class="control-label" for="input01">促销价</label>
   <div class="controls">
    <input type="text" name="ActualCost" class="input-xlarge">
   </div>
   </div> 
   
   
   <div class="form-actions">
   <button type="submit" class="btn btn-primary">保存</button>
   <button class="btn">取消</button>
   </div>
  </fieldset>
</form>
</body>

js代码 

<script type="text/javascript">
function ProductsViewModel() { 
 var baseUri = 'http://localhost:8080/knockout/'; 
 var self = this; 
 //self.products = ko.observableArray([{'Id':'111','Name':'联想K900','Price':'3299','ActualCost':'3000'},{'Id':'222','Name':'HTC one','Price':'4850','ActualCost':'4500'}]); 
  self.products = ko.observableArray();
 
 $.getJSON(baseUri + "list", self.products);//加载产品列表

 //添加产品
 self.create = function (formElement) {    
  $.post(baseUri + "add", $(formElement).serialize(), function(data) {
    if(data.success){//服务器端添加成功时,同步更新UI
    var newProduct = {};
    newProduct.Id = data.ID;
    newProduct.Name = formElement.Name.value;
    newProduct.Price = formElement.Price.value; 
    newProduct.ActualCost = formElement.ActualCost.value; 
    self.products.push(newProduct);
    }
  },"json"); 
 } 
 //修改产品
 self.update = function (product) {
  $.post(baseUri + "update", product, function(data) {
    if(data.success){
     alert("修改成功");
    }
  },"json"); 
 } 
 
 //删除产品
 self.remove = function (product) { 
  $.post(baseUri + "delete", "productID="+product.Id, function(data) {
    if(data.success){
    //服务器端删除成功时,UI中也删除
    self.products.remove(product);
    }
  },"json"); 
  
 } 
}
ko.applyBindings(new ProductsViewModel());

</script>

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript库 开发规则
Jan 31 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
jQuery的live()方法对hover事件的处理示例
Feb 27 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
Dec 10 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
使用 Vue.js 仿百度搜索框的实例代码
May 09 Javascript
angular实现input输入监听的示例
Aug 31 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
js注入 黑客之路必备!
Sep 14 #Javascript
AngularJS 模块化详解及实例代码
Sep 14 #Javascript
AngularJS 过滤与排序详解及实例代码
Sep 14 #Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 #Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 #Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 #Javascript
You might like
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
用户注册常用javascript代码
2009/08/29 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
python利用装饰器进行运算的实例分析
2015/08/04 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
django的ORM操作 增加和查询
2019/07/26 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
J2EE面试题集锦(附答案)
2013/08/16 面试题
日语系毕业生推荐信
2013/11/11 职场文书
初婚未育证明
2014/01/15 职场文书
银行批评与自我批评
2014/02/10 职场文书
收款委托书范本
2014/09/11 职场文书
安全责任书
2015/01/29 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python