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 相关文章推荐
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
js键盘上下左右键怎么触发function(实例讲解)
Dec 14 Javascript
Html5的placeholder属性(IE兼容)实现代码
Aug 30 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
jquery实现炫酷的叠加层自动切换特效
Feb 01 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
jquery实现网页定位导航
Aug 23 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
浅谈php自定义错误日志
2015/02/13 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
JavaScript 指导方针
2007/04/05 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
React中的render何时执行过程
2018/04/13 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
深入理解react 组件类型及使用场景
2019/03/07 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
Python 字典与字符串的互转实例
2017/01/13 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
一份报关员的职业规划范文
2014/01/08 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
生活委员竞选稿
2015/11/21 职场文书