zoukankan      html  css  js  c++  java
  • 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值将只设置一次并且以后不在更新。

  • 相关阅读:
    Make something people want
    POJ 3662 Telephone Lines (二分+Dijkstra)
    POJ 2010 Moo University
    HDU 6627 2017ACM/ICPC亚洲区域赛沈阳站 Rabbits
    HDU 6625 2017ACM/ICPC亚洲区域赛沈阳站 Little Boxes(高精度整数加法)
    Codeforces 877D Olya and Energy Drinks(BFS+剪枝)
    CodeForces 876B Divisiblity of Differences (数学水题)
    POJ 2139 Six Degrees of Cowvin Bacon (Floyd最短路)
    UESTC 1057 秋实大哥与花 (线段树)
    Linux安装Oh-my-zsh
  • 原文地址:https://www.cnblogs.com/zxbzl/p/6004126.html
Copyright © 2011-2022 走看看