zoukankan      html  css  js  c++  java
  • (四 )Knockout

    ko.observableArray()就可以自动检测属性,其实他只是监控对象,而不是对象中的属性

    使用ko.observable()进行处理

    DEMO1

    实时更新属性

    //定义user数据对象
    var UserViewModel = function(id,name,score) {
        var me = this;
        me.id = id;
        me.name =ko.observable(name);  // 监控属性
        me.score =ko.observable(score);
    }
    //定义ViewModel
    var ViewModel = function() {
        var me = this;
        me.users = ko.observableArray();//添加动态监视数组对象
            me.removeUser = function (user) {
            me.users.remove(user);
        }
        me.totalscore = ko.computed(function () {
            var total = 0;
            $.each(me.users(), function (i, u) {
                total += u.score();
            })
            return total;
        });
    };
    $(function () {
        var vm = new ViewModel();
        //预先添加一些数据
        vm.users.push(new UserViewModel("d1", "rohelm", 121));
        vm.users.push(new UserViewModel("d2", "walker", 125));
        $("#btnAddUser").click(function () { 
        vm.users.push(new UserViewModel(
            $("#u_id").val(),
            $("#u_name").val(),
            parseInt($("#u_score").val())));
        });
        $("#btnUpdateScore").click(function () {
            vm.users()[vm.users().length-1].score(125).name("HelloWorld!");
        });
        ko.applyBindings(vm);
    });
    <section style="margin:250px">
        <section>
          ID<input type="text" id="u_id" style="30px">
          Name<input type="text" id="u_name" style="30px">
          Score<input type="text" id="u_score" style="30px"><br/>
          <input  value="Add" id="btnAddUser" type="button" style="200px; background-color:#ff6a00;"/><br/><span data-bind="text: users().length"></span> 条--------------合计
           <span data-bind="text: totalscore"></span></section>
        <section>
        <table>
             <thead>
                 <tr><th>ID</th><th>Name</th><th>Score </th><th>Option</th></tr>
             </thead>
            <tbody  data-bind="foreach: users">
                 <tr>
                    <td><span data-bind="text: id"></span></td>
                    <td><span data-bind="text: name"></span></td>
                    <td><span data-bind="text: score"></span></td>
                     <td><a href='#' data-bind="click: $root.removeUser">Remove</a></td>
                 </tr>
            </tbody>
         </table>
             <input  value="Update测试" id="btnUpdateScore" type="button" style="200px; background-color:#ff6a00;"/><br/>
        </section>
    </section>

    DEMO2

    通过属性控制html元素的显示、隐藏

    var ViewModel = function() {
        var me = this;
        me.isVip = ko.observable(false);  // 监控属性
        me.username = ko.observable("walker_@@");
    }
    $(function () {
        ko.applyBindings(new ViewModel());
    });
    <p>
        <input id="isvip" type='checkbox' data-bind="checked: isVip" /><label for="isvip">是否是会员</label>
    </p>
    <p>
        你的用户名是:
        <input type='text' data-bind="value: username, enable: isVip,css: {account: username().indexOf('G')>-1}"/>
        <span data-bind="visible: isVip">尊贵的会员欢迎你访问!</span>
    </p>

    解析:

    view属性绑定,data-bind="checked:true/false",data-bind="visible:true/false"

  • 相关阅读:
    求正方形的面积和周长
    面向对象练习——校园管理系统
    python--面向对象(最全讲解)
    git删除远程仓库的文件或目录
    git设置忽略文件和目录
    计算器
    织梦标签整理
    比较恶心的360老年版浏览器 文件导出下载
    织梦文章列表样式多元化实现
    php函数整理
  • 原文地址:https://www.cnblogs.com/huair_12/p/4233754.html
Copyright © 2011-2022 走看看