【问题标题】:How to check checkbox based on array value in knockout js如何在淘汰赛js中根据数组值检查复选框
【发布时间】:2014-02-24 14:52:28
【问题描述】:

我正在做淘汰赛 js。我有一个来自数据库的数组列表,方法是进行 ajax 调用并将所有值保存在敲除可观察数组中。

我正在遍历数组。根据我要选中或取消选中复选框的值。以下是我的做法,但这似乎不起作用。我可以看到数组中存在 roleid 的值,但如果 roleid 的值为 true,则不会选中复选框。我在这里做错了什么。

<tbody data-bind="foreach:$root.test">
 <tr>       
    <div><input type="checkbox" value="1" data-bind="checked: roleid == 1"/></div> 
 </tr>
</tbody>

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    我认为 roleid 需要是可观察的。然后就可以使用了

    roleid() === 1
    

    roleid() === true
    

    以适合您的情况为准。

    【讨论】:

      【解决方案2】:

      如果 roleid 是可观察的并且设置为字符串值,这将起作用。

      knockout "checked" 仅比较字符串值与字符串值,因此 value="1" 中的值被视为字符串。

      如果这样设置roleid,您的复选框将被选中

      viewModel.roleid = ko.observable("1");

      【讨论】:

        【解决方案3】:

        您可以使用 checkedValue 绑定,并且可以将 observableArray 分配给 checked 绑定。

        来自文档

        如果你的绑定也包含checkedValue,这定义了checked绑定使用的值,而不是元素的value属性。如果您希望值不是字符串(例如整数或对象),或者您希望动态设置值,这将非常有用。

        这里是 javascript 代码:

        function viewModel()
        {
           var self = this;
        
           //the array list which you can get from the server 
           self.items = ko.observableArray([
                    { item: '1' },
                    { item: '2' },
                    { item: '3' },
                    { item: '4' }
                ]);
        
           //the array of items which you want to be checked 
           self.chosenItems = ko.observableArray(
             [
               self.items()[1],
               self.items()[3]
             ]
           );
        }
        

        HTML 代码

        <div data-bind="foreach: items">
            <input type="checkbox" 
                   data-bind="checkedValue: $data, checked: $root.chosenItems" />
            <span data-bind="text: item"></span><br />
        </div>
        

        here 是演示使用的Js fiddle。

        【讨论】:

          猜你喜欢
          • 2013-03-11
          • 2013-08-06
          • 2017-08-19
          • 1970-01-01
          • 2020-08-28
          • 1970-01-01
          • 2014-03-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多