Knockout结合Bootstrap创建动态UI--产品列表管理

本篇文章结合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>

本文转自:http://doliangzhe3.iteye.com/blog/1874910

时间: 2024-10-13 22:47:33

Knockout结合Bootstrap创建动态UI--产品列表管理的相关文章

【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI

注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 5: Creating a Dynamic UI with Knockout.js 第5部分:用Knockout.js创建动态UI 本文引自:http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-fra

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个"子activity",你可以在不同的activity中重用它).本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android 1.6的设备. 提示: 如果你决定你的应用需求的最低API级别是11或者更高,那么你不需要使用Support Library,你可以直接使用

9) 十分钟学会android--使用Fragment建立动态UI

为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用 Fragment 创建这些模块,Fragment 就像一个嵌套的 Activity,拥有自己的布局(Layout)并管理自己的生命周期. Fragment 定义了自己的布局后,它可以在 Activity 中与其他 Fragment 生成不同的组合,从而为不同的屏幕尺寸生成不同的布局(小屏幕一次也许只

Android学习路线(二十)运用Fragment构建动态UI

要在Android系统上创建一个动态或者多面板的用户界面,你需要将UI组件以及activity行为封装成模块,让它能够在你的activity中灵活地切换显示与隐藏.你可以使用Fragment类来创建这些模块,它们能够表现得有些像嵌套的activity,它们定义着自己的布局,管理自己的生命周期. 当一个fragment指定了它自己的布局,它可以在activity中和其他的fragment配置为不同的组合,这样就能够为不同的屏幕尺寸来修改你的布局配置(在小屏幕上一次展现一个fragment,而在大屏

Asp.net MVC 3实例学习之ExtShop(四)——完成产品列表页

在完成产品列表页前要做一些准备功夫.首先是去下载MvcPager用了为产品列表分页.下载的可能是基于MVC 2的,没关系,可以用在MVC 3上.如果有担心,下载源代码重新编译一次好了.下载后将DLL添加到引用里. 接着是要修改一下路由以实现"Catalog/List/[id]/[page]"的访问.打开"Global.asax.cs"文件,然后在默认路由之前添加以下代码: 1                          routes . MapRoute (

openerp创建动态视图-fields_view_get

openerp的视图结构是以XML的格式存放于ir.ui.view表中,属于静态格式,设计之后就固定, 但可以通过在model中重写fields_view_get函数,在视图加载时修改arch属性,动态修改视图的结构 def fields_view_get(self, cr, uid, view_id=None,view_type='form',context=None,toolbar=False,submenu=False): ip_obj = self.pool.get('hr.rule.i

Bootstrap历练实例:带列表组的面板

带列表组的面板 我们可以在任何面板中包含列表组,通过在 <div> 元素中添加 .panel 和 .panel-default 类来创建面板,并在面板中添加列表组.您可以从 列表组 一章中学习如何创建列表组. <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <

使用Fragments来构建动态UI

为了在Android上为用户提供动态.多窗体的交互体验,我们需要将UI组件和Activity操作封装成模块来使用,使得我们可以在众多Activities之间来回切换.Android SDK给我们提供了Fragment类来构建这些模块,Fragment本身就像是一个嵌套的Activity,有自己的布局并管理自己的生命周期. 当一个Fragment定义了自己的布局之后,它就可以在某个Activity当中和其它Fragments自由组合,从而为不同屏幕尺寸的设备生成不同的布局. 本文将展示如何用Fra

UI产品设计流程中的14个要点

http://www.sj33.cn/digital/wyll/201404/38318.html 自从我在 Dribbble 上贴了一幅我的产品设计成果,受到了大家伙热烈的反馈,对此我深受鼓励,我决定写下这篇文章,用来记录我这两年里作为产品设计师,所学到的东西.说起来有点惭愧,这几年我一直都在使用同一套产品设计的流程,但是我觉得这套流程最适合我,对我来说是最理想的,所以就很少去更换.我的这套工作流程我觉得有 4 个地方可以和大家分享一下--前期工作.具体设计.后期工作以及一些提高效率的小细节