• Knockout.Js官网学习(checked 绑定)


    前言

    checked绑定是关联到checkable的form表单控件到view model上 - 例如checkbox(<input type='checkbox'>)或者radio button(<input type='radio'>) 。当用户check关联的form表单控件的时候,view model对应的值也会自动更新,相反,如果view model的值改变了,那控件元素的check/uncheck状态也会跟着改变。

    注:对text box,drop-down list和所有non-checkable的form表单控件,用value绑定来读取和写入是该元素的值,而不是checked绑定。

    简单示例

     示例代码

    复制代码
    <p>Send me spam:<input type="checkbox" data-bind="checked:wantsSpam" /></p>
    <script type="text/javascript" src="~/Scripts/knockout-2.3.0.debug.js"></script>   
    <script type="text/javascript">
        var viewModel = {
            wantsSpam:ko.observable(true)
        };
    
        viewModel.wantsSpam(false);
        ko.applyBindings(viewModel);
    </script>
    复制代码

    运行之后

     对于checkbox,当参数为true的时候,KO会设置元素的状态为checked,反正设置为unchecked。如果你传的参数不是布尔值,那KO将会解析成布尔值。也就是说非0值和非null对象,非空字符串将被解析成true,其它值都被解析成false。

    当用户check或者uncheck这个checkbox的时候,KO会将view model的属性值相应地设置为true或者false。

    Checkbox关联到数组

    复制代码
    <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 type="text/javascript" src="~/Scripts/knockout-2.3.0.debug.js"></script>   
    <script type="text/javascript">
        var viewModel = {
            wantsSpam: ko.observable(true),
            spamFlavors: ko.observableArray(["cherry", "almond"])
        };
        ko.applyBindings(viewModel);
        viewModel.wantsSpam(false);
        viewModel.spamFlavors.push("msg");
    </script
    复制代码

    添加radio button

        <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: spamFlavor"/> Cherry</div> 
        <div><input type="radio" name="flavorGroup" value="almond" data-bind="checked: spamFlavor"/> Almond</div> 
        <div><input type="radio" name="flavorGroup" value="msg" data-bind="checked: spamFlavor"/> Monosodium Glutamate</div>
    spamFlavor:ko.observable("cherry")

    对于radio buttons,KO只有当参数值等于radio button value属性值的时候才设置元素为checked状态。所以参数应是字符串。在上面的例子里只有当view model 的spamFlavor 属性等于“almond”的时候,该radio button才会设置为checked。

    当然,最有用的是设置一组radio button元素对应到一个单个的view model 属性。确保一次只能选择一个radio button需要将他们的name属性名都设置成一样的值(例如上个例子的flavorGroup值)。这样的话,一次就只能选择一个了。

    如果参数是监控属性observable的,那元素的checked状态将根据参数值的变化而更新,如果不是,那元素的value值将只设置一次并且以后不在更新。

  • 相关阅读:
    linux获取日志指定行数范围内的内容
    python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题
    robot framework添加库注意事项
    robot framework取出列表子元素
    Vue 及框架响应式系统原理
    响应式布局和自适应布局的不同
    前端综合学习笔记---异步、ES6/7、Module、Promise同步 vs 异步
    前端综合学习笔记---变量类型、原型链、作用域和闭包
    doT.js模板引擎及基础原理
    Spring Boot入门第五天:使用JSP
  • 原文地址:https://www.cnblogs.com/zxbzl/p/6004126.html
Copyright © 2020-2023  润新知