knockoutjs十三 focus checked绑定
2016-03-19 11:46
615 查看
knockoutjs十三 focus checked绑定
毕设加上班有点忙,不好意思,今天讲解的时focus和checked绑定,好久没去官网看看,发现他们已经更新了不少东西,这些我以前都没有用过,就找个官方的例子讲解一下。<input data-bind="hasFocus: isSelected" /> <button data-bind="click: setIsSelected">Focus programmatically</button> <span data-bind="visible: isSelected">The textbox has focus</span> <p> Name: <b data-bind="visible: !editing(), text: name, click: edit"> </b> <input data-bind="visible: editing, value: name, hasFocus: editing" /> </p> <p><em>Click the name to edit it; click elsewhere to apply changes.</em></p> <script> function Model() { var self = this; self.isSelected = ko.observable(false); self.setIsSelected = function() { this.isSelected(true) } // Data self.name = ko.observable("jamas"); self.editing = ko.observable(false); // Behaviors self.edit = function() { this.editing(true) }; } var model = new Model(); ko.applyBindings(model); </script>
focus是很简单的,他只是检测一个元素是否选中,yes返回true,no返回false,就这这么简单,你设置true就选中,设置false就不选中。官方的例子是告诉我们可以作为点击编辑,原本是一个文本,点击之后选中他,让他变为input框,这确实是不错的一个用法。我以前没有使用过所以我也想不出还有其他的什么作用。
<p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam" /> </p> <div data-bind="visible: wantsSpam"> Preferred flavors of spam: <div> <input type="checkbox" value="cherry" data-bind="checked: spamFlavors" /> Cherry</div> <div> <input type="checkbox" value="almond" data-bind="checked: spamFlavors" /> Almond</div> <div> <input type="checkbox" value="msg" data-bind="checked: spamFlavors" /> Monosodium Glutamate</div> </div> <script> function Model() { var self = this; self.wantsSpam = ko.observable(true); self.spamFlavors = ko.observableArray(["cherry", "almond"]); } var model = new Model(); ko.applyBindings(model); </script>
checked 比较有内涵啊 ,官方比较多,而且确实radio和checkbox时比较烦的东西,表单中反选是很恶心的一件事。但是我看到ko的这个很厉害,checkbox设置你需要选中的只需要把他的值放入一个数组,那么他就会帮你选中,简单了我们反选的过程,而且选中的值直接放入一个数组,操作简单。如果是radio只要checked的值是true就会选中,false就不会选中。当然你也可以设施一个非boolean值,那么radio中value和checked的值相等的,就会被选中,简单易懂。
<!-- ko foreach: items --> <input type="checkbox" data-bind="checkedValue: $data, checked: $root.chosenItems" /> <span data-bind="text: itemName"></span> <!-- /ko --> <script> function Model() { var self = this; self.items = ko.observableArray([{ itemName: 'Choice 1' }, { itemName: 'Choice 2' }]); self.chosenItems = ko.observableArray(); } var model = new Model(); ko.applyBindings(model); </script>
checked绑定还提供了另一个参数checkedValue,这个参数就和checkbox或是radio中的value是一样的,但是这个checkedValue可以设置一个非string的值,可以是一个对象,那么你选中时chosenItems就是一个数组,你可以获取对象中想要的值,但是我发现反选却不容易,因为其中的对象都是引用,想比较他们不是那么容易,在使用时建议使用value设置值。
最后几篇可能有点急躁,有误请联系我qq1357197829,我准备过一段时间把这个系列搬到github pages上了,到时候希望大家赏脸。代码托管在https://github.com/lushunming/knockoutJSDemo.git可以直接克隆。
相关文章推荐
- 在javascript里 string 和 int 类型转换
- 在javascript里 string 和 int 类型转换
- js作用域问题
- 浅谈JavaScript原型链继承方式与闭包
- Jsp与servlet的区别 1
- javascript表单验证
- JSTL函数标签库的fn标签
- JS - 删除确认
- 闲扯json取值,联想map取值。
- JS事件模型
- 关于JS变量的作用域,作用域链与闭包
- JS的进阶之路(一)
- JSP 从配置文件获取参数详解
- javascript设计模式-工厂模式(简单工厂)
- JSP九大内置对象及四个作用域
- JSP serverlet区别与联系
- JSON与XML的区别比较
- 项目常用Javascript分享,包含常用验证和Cookie操作
- js变量提升
- jsp和weblogic和ant的关联