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 checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
Javascript解析URL方法详解
Dec 05 Javascript
jQuery中的jQuery()方法用法分析
Dec 27 Javascript
浅谈jQuery中height与width
Jul 06 Javascript
jQuery解析json格式数据简单实例
Jan 22 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
深入理解node exports和module.exports区别
Jun 01 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
浅谈vue的踩坑路
Aug 31 Javascript
二维码条形码生成的JavaScript脚本库
Jul 07 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
Vue.js用法详解
2017/11/13 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
js+css实现红包雨效果
2018/07/12 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
node中的密码安全(加密)
2018/09/17 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
Python牛刀小试密码爆破
2011/02/03 Python
Python Property属性的2种用法
2015/06/21 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
入学申请自荐信范文
2014/02/26 职场文书
党员公开承诺书
2014/03/25 职场文书
企业金融服务方案
2014/06/03 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书