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给我们不一般的感觉吧,它使用前台开发者可以不去关心数据的生产方式,而直接以标记的形式填充即可。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定,如需转载请自行联系原博主。

MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定相关推荐

  1. MVVM架构~knockoutjs系列之验证成功提示显示

    对于knockout.validation来说,我们已经知道了如何去验证大部分表单元素,而有时,我们的需求希望在每个元素验证成功后,去显示正确的提示,这个我们很容易的使用self.元素.isValid ...

  2. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法

    说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都在它的源码 ...

  3. MVVM架构~knockoutjs系列之包括区域级联列表的增删改

    返回目录 这个例子我做了几次,之前总是有BUG,目前测试后,确定没有BUG才发上来的,主要功能是实现"我的银行"模块的增删改的功能,这个里面包括了级联列表的区域选择,这部分是难点, ...

  4. MVVM架构~knockoutjs系列之验证信息自定义输出~再续

    返回目录 对于一个项目的表单验证,方式有很多,效果也有很多,具体使用哪种完成取决于产品这边,产品让你用什么,你就要用什么,而做为开发人员,我们要做的就是"整理近可能多的架构方式",这样才可以自由的应变 ...

  5. MVVM架构~knockoutjs系列之为validation.js扩展minLength和maxLength

    返回目录 为什么要对minLength和maxLength这两个方法进行扩展呢,是因为这样一个需求,在用户注册时,可以由用户自己决定他们输入的字符,中文,英文,数字均可,这样做了之后,使用户的体验更好 ...

  6. MVVM架构~knockoutjs系列之验证信息自定义输出~续

    返回目录 上一讲中,我以一个实际中的例子说明了knockoutjs的自定义验证功能,在使用过程中,出现了一个问题,当然了不是问题,只是一种需求,上一讲中自定义验证的表现是:当页面加载后,自动显示有问题 ...

  7. MVVM架构~knockoutjs系列之扩展ajax验证~验证输入数据是否与后台数据相等

    返回目录 在看这篇文章之前,你有必要先看我之前的文章,之前文章是将一个方法以参数的形式传给KO,然后返回一个真假值,去做验证,这类似于面向对象语言里的委托,在JS里我们叫它回调方法,本篇文章与前一文章 ...

  8. MVVM架构~knockoutjs实现简单的购物车

    返回目录 概念相关 购物车相信大家都用过,很方便,可以将多个商品添加到购物车,并且可以修改购买商品的数据,当然为了用户体验好,在修改数据时,你的价格也会出现变化的,这使用JS可以实现,但我认为,代码量 ...

  9. 《Android构建MVVM》系列(一) 之 MVVM架构快速入门

    前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Arc ...

最新文章

  1. Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题(转载)
  2. python逗号bug
  3. IPhone之AVAudioRecorder
  4. 如何升级cordova插件
  5. 今年怪事特别多 时代盘点09十大奇闻
  6. FreeRTOS应用开发笔记之一:FreeRTOS在STM32的移植
  7. C#中具有进程间通信的Singleton应用程序
  8. ad采样频率_AD转换器是什么?快来一起学习一下
  9. 三星Samsung ML-2525W 驱动
  10. 银河麒麟服务器v10 sp2安装fio磁盘IO检测工具
  11. Word里面文字怎么加边框
  12. 不爬山的人很少摔跤——Celeste蔚蓝的叙事理念与关卡设计(一)
  13. iOS 音乐播放器的实现
  14. 时序分析基本概念介绍Slew/Transition
  15. oCPC和oCPM的本质区别是什么?
  16. uniapp打包后高德地图定位失败解决
  17. ida如何识别linux内核函数,如何识别IDA反汇编中动态链接库中的函数
  18. Python Web简介
  19. 【MyBatis-Plus】CRUD 操作
  20. 用趋势突破策略回测CTA

热门文章

  1. MyDAL - is null is not null 条件 使用
  2. js日期时间控件------layDate
  3. python基础7--socket
  4. CSS表单元素样式设置
  5. 遇到的bug及解决方法,持续更新
  6. html5两条直线,Html5新特性用canvas标签画多条直线附效果截图
  7. rust能捏人不_吃鸡:捏脸系统上线后,玩家们都嗨了
  8. linux安装软件imagemagick,Linux系统中怎么安装和使用ImageMagick软件?
  9. 重新配对_国羽世界冠军组合重新配对!男方笑言“老夫老妻”,没什么感觉
  10. android 指南针传感器,android 传感器使用 Compass指南针的实现功能