• MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定


    返回目录

    Knockoutjs是微软mvc4里一个新东西,用这在MVC环境里实现MVVM,小微这次没有大张旗鼓,而是愉愉的为我们开发者嵌入了一个实现MVVM的插件,这下面的几篇文章中,我和大家将一起去探讨它,

    它是如何把前台开发者与后台开发者的工作彻底分离的

    对于html标记来说,为它们赋值的方法有很多,你使用JS动态为它赋值也是可能的,但从面向对象的角度来说,意义不大,而当前台开发者了解数据结构后,可以使用Knockoutjs实现面向对象的数据绑定,

    HTML元素的面向对象的赋值,今天是个开篇,内容比较简单,只讲一下text,value和attr的数据绑定。

    text绑定:你可以为p,span,div,td等标记去加这个text元素

    value绑定:你可以为input标记加value元素

    attr绑定:你可以为标记动态添加它们的属性,如<a>标签的href,title,<img>标签的src,alt等等

    visible绑定:可以动态显示或隐藏指定的标记,true值为显示,false值为隐藏

    with绑定:可以绑定一个对象,然后在内部标记里就可以访问对象的属性了

    下面的实例中,包含了上面几个概念的用法:

     <p data-bind="with:lines">
            单价:<input type="text" data-bind='value:productPrice,  valueUpdate: "afterkeydown"' />
            数量:<input type="text" data-bind='visible:productPrice() > 0,value: productCount, valueUpdate: "afterkeydown"' />
            小计:<span data-bind="text:total"></span>
            <a data-bind='attr:{href:"/home/add/"+id,title:name}'>添加</a>
        </p>
        <script type="text/ecmascript">
            var product = function () {
                self = this;
                self.id = 1;
                self.name = "测试产品";
                self.productPrice = ko.observable(0);
                self.productCount = ko.observable(1);
                self.total = ko.computed(function () {
    
                    return self.productCount() * self.productPrice();
                });
            }
            var products = function () {
                var self = this;
                self.lines = ko.observable(new product());
            }
            ko.applyBindings(new products());
        </script>

    上面的实例中,当productPrice 为0时,会将productPrice所在的元素隐藏,而这个实例中的数据返回为一个对象lines,这时如果希望访问它内部属性,需要我们使用with关键字。

    怎么样,Knockout给我们不一般的感觉吧,它使用前台开发者可以不去关心数据的生产方式,而直接以标记的形式填充即可。

    返回目录

  • 相关阅读:
    程序员达到高效率的一种境界 狼人:
    IBM夏然:软件产业对整个国家发展举足轻重 狼人:
    浅析Node.js:一个“编码就绪”服务器 狼人:
    eBay的Turmeric和VJet的源程序移到了GitHub上 狼人:
    程序员最常见的技术性误区 狼人:
    我不是一个工程师——我是一个软件开发者 狼人:
    【简讯】Adobe停止发布AIR for Linux版本 狼人:
    【赏析】15个非常棒的使用CSS3的设计组合 狼人:
    5款最好的免费Linux缓存系统 狼人:
    漫画:天堂里没有程序员! 狼人:
  • 原文地址:https://www.cnblogs.com/lori/p/3502100.html
Copyright © 2020-2023  润新知