• 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值将只设置一次并且以后不在更新。

  • 相关阅读:
    电子书下载:Beginning ASP.NET 2.0 AJAX
    电子书下载:C# 4.0 How To
    电子书下载:Pragmatic Unit Testing in C# with NUnit
    7 个最好的.Net开源CMS系统
    电子书下载:Professional ASP.NET 2.0 Server Control and Component Development
    电子书下载:Beginning ASP.NET 2.0 Databases From Novice to Professional
    电子书下载:Professional .NET 2.0 Generics
    蛙蛙推荐:[算法练习]最长不完全匹配子串频率计算
    蛙蛙推荐:F#实现并行排序算法
    蛙蛙推荐:蛙蛙教你发明一种新语言之二代码生成
  • 原文地址:https://www.cnblogs.com/zxbzl/p/6004126.html
Copyright © 2020-2023  润新知