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中对于DOM的加强
Apr 11 Javascript
js使用eval解析json(js中使用json)
Jan 17 Javascript
JavaScript删除指定子元素代码实例
Jan 13 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
Apr 17 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
vue实现前进刷新后退不刷新效果
Jan 26 Javascript
es6中let和const的使用方法详解
Feb 24 Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 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使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
ECMAScript 基础知识
2007/06/29 Javascript
js 函数调用模式小结
2011/12/26 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python3几个常见问题的处理方法
2019/02/26 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
Delphi CS笔试题
2014/01/04 面试题
医学生自我鉴定范文
2013/11/08 职场文书
文员岗位职责范本
2014/03/08 职场文书
司仪主持词两篇
2014/03/22 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书