kendo复选框检查绑定。无法绑定到复选框数组

时间:2013-04-23 08:37:53

标签: binding checkbox kendo-ui

我有一个复选框数组,我想将它用作数组,例如在一组选项中设置单个iitems并检索该组的值。 对于一个复选框,我能够设置它并获得click事件,作为一个数组我什么都得不到。

HTML code:

    <div class="k-group" id="chkbox-options">
    <label>
        Red
        <input type="checkbox" id="chk1" value="Red" data-bind="checked: colors" />
        Green
        <input type="checkbox" id="chk2" value="Green" data-bind="checked: colors" />
        Blue
        <input type="checkbox" id="chk3" value="Blue"  data-bind="checked: colors" />
    </label>
    </div> 

Javascript代码:

    <script  type="text/javascript">
        var colordata = null;
        $(document).ready(function () {
            colordata = kendo.observable({
                colors: ["Blue"]
            });
            kendo.bind($("chkbox-options"), colordata);
            $("#dump-values").click(function () {
                kendoConsole.log(colordata.colors.toString());
            });
            $("#chk1").click(function () {
                kendoConsole.log("click chk1");
                if (this.checked) {
                    kendoConsole.log("click chk1 true");
                }
            });
         });
    </script> 

我可以在单个复选框上获取点击事件,而我无法在字段var colordata中的kendo.observable中设置复选框的值。

我在kendo文档中看到了一个类似的例子,但是我无法使它工作。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

几点: 1.在kendo.bind中,缺少div id chkbox-options 2.您需要读取可观察对象的change事件中更改的颜色。更改发生在click事件之后,因此在单击事件内部,您始终可以看到旧数据。

我已经纠正了你的jsFiddle:http://jsfiddle.net/whizkid747/rPjjJ/4/

var colordata = null;
        $(document).ready(function () {
            colordata = kendo.observable({
                colors: ["Blue"]
            });
            kendo.bind($("#chkbox-options"), colordata);

            colordata.bind("change", function(e) {
                var selectedColors = '';

                $.each(colordata.colors, function(key, value){
                    selectedColors = selectedColors + " " + value;
                });
                if(colordata.colors.length == 0){
                    console.log('no colors selected');
                }else{
                console.log('selected colors:' + selectedColors);  
                }
            });            
         });