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操作Xml
Sep 20 Javascript
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
Jul 31 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
JavaScript之DOM_动力节点Java学院整理
Jul 03 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
简述vue状态管理模式之vuex
Aug 29 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 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 setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
解析js如何获取css样式
2016/12/11 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
django中静态文件配置static的方法
2018/05/20 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Python实现时间序列可视化的方法
2019/08/06 Python
python多线程分块读取文件
2019/08/29 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
财务会计专业自荐书
2014/06/30 职场文书
运动会主持词大全
2015/07/02 职场文书
python缺失值的解决方法总结
2021/06/09 Python
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript
Vue router配置与使用分析讲解
2022/12/24 Vue.js