zoukankan      html  css  js  c++  java
  • Knockout.js初体验

    前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个类库的设计很有意思。接下来就搞清楚什么是Knockout.js

    Knockout.js有4个重要的概念:(一定要牢记)

       1.声明绑定:使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上。

       2.UI界面自动刷新:当您的模型状态(model state)改变时,您的UI界面将自动更新。

       3.依赖跟踪:为转变和联合数据,在你的模型数据之间隐式建立关系。

       4.模板:为您的模型数据快速编写复杂的可嵌套的UI。

    Knockout.js工作原理:

       是以数据模型为基础,创建响应显示,编辑用户界面的javascript类库,可以自动更新UI界面。主要根据数据的判断和获取来控制UI界面的响应和展示。

    接下来一段小例子分解分析:(功能说明:我要选择我想看的类型的书籍,当我选中一种类型,页面就会展示出我要选择的信息,书名和价钱)

    首先我们要在页面引用Knockout.js

    <script type="text/javascript" src="js/knockout.js"></script>

     然后自己在HTML里面添加元素,我拿<select>标签为例

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link type="text/css" rel="stylesheet" href="css/klm.css">
    </head>
    <body>
      <select data-bind="options:dataList,optionsText:'name',value:chosenKlm"></select>
      <table>
          <tr>
              <td>书名:</td>
              <td><h2 data-bind="text:chosenKlm().des"></h2></td>
          </tr>
          <tr>
              <td>价钱:</td>
              <td><p data-bind="text:formatPrice(chosenKlm().price)"></p></td>
          </tr>
      </table>
    
    </body>
    <script type="text/javascript" src="js/knockout.js"></script>
    <script type="text/javascript" src="js/klm.js"></script>
    </html>

    网页显示截图如下:

    通过上面的HTML标签都可以看到一个自定义参数data-bind,这个参数在整个页面发挥很重要的作用,绑定语法的入口,通过这个自定义参数可以实现很多功能,这就是Knockout.js魅力所在。

    从页面截图看到默认书类型为故事类,书名:故事会,价钱:0 这里我在js中做了一个三元表达式的判断,

    主要看js写法和展现的结构,单独定义了一个klm.js用来处理页面逻辑:

    /**
     * Created by 蒯灵敏 on 15-2-12.
     */
    //创建假数据
    var  dataList = [
        { name: '故事类', des: '故事会', price: 0 },
        { name: '文学类', des: '红楼梦', price: 50 },
        { name: '科幻类', des: '星球大战', price: 19.952 },
        { name: '笑话类', des: '逗比趣事', price: 18.503 }
    ];
    //编辑显示的价钱格式
    var formatPrice= function(price){
        return price == 0 ? 0: "$" + price.toFixed(2);
    };
    var viewModel = {
        chosenKlm: ko.observable(dataList[0])
    };
    
    ko.applyBindings(viewModel);

     首先定义了一个dataList用来模拟用到的数据,然后创建一个viewModel,用来把数据绑定到DOM节点上去,并且Knockout.js提供一个observable函数用来监控数据的作用。在这里单单创建一个viewModel是无法让页面进行数据交互的,需要通过appplyBindings函数来进行绑定才能实现页面交互效果;

    ko.applyBindings有2个参数:第一个用于声明式绑定,第二个可选的,可以声明成使用data-bind的HTML元素或者容器,例如, ko.applyBindings(viewModel, document.getElementById('myid'))

     例子网址http://105.kuailingmin.sinaapp.com/klm.html

  • 相关阅读:
    GUI编程笔记(java)02:java.awt和java.swing包的区别
    GUI编程笔记(java)01:GUI和CLI
    Android(java)学习笔记138:三重for循环的优化(Java面试题)
    Android(java)学习笔记137:ListView编写步骤(重点)
    Android(java)学习笔记136:利用谷歌API对数据库增删改查(推荐使用)
    Android(java)学习笔记135:SQLite数据库(表)的创建 以及 SQLite数据库的升级
    spring ioc 注解配置
    代码简洁之道与重构
    快速定位到方法的被调用处
    spring ioc xml配置
  • 原文地址:https://www.cnblogs.com/kuailingmin/p/4287412.html
Copyright © 2011-2022 走看看