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 相关文章推荐
jquery实现键盘左右翻页特效
Apr 30 Javascript
javascript实现自动填写表单实例简析
Dec 02 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
Aug 02 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
JS实现中文汉字按拼音排序的方法
Oct 09 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
Mar 01 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 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
php 无限级 SelectTree 类
2009/05/19 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
python中查看变量内存地址的方法
2015/05/05 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
final, finally, finalize的区别
2012/03/01 面试题
大学生个人自荐信样本
2014/03/02 职场文书
品牌宣传方案
2014/03/21 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
小学语文复习计划
2015/01/19 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
初中英语教学反思范文
2016/02/15 职场文书