0

下面是我的带有 KnockOut JS 的 MVC 应用程序代码,我有带有“onClick”事件“SetData()”的提交按钮。

如何获取所选复选框的所有 id,我将在 KnockOut OnSubmit 中工作的注释代码放入,但我想要在外面,

///

@model Demo.Web.ViewModels.HomeViewModel
@{
   ViewBag.Title = "Two Page";
 }
@using (Html.BeginForm())
{
<table>
    <tr>
        <td>
            <span data-bind="foreach: pageOptions">
                <input type="checkbox" data-bind="checked: IsChecked" />
                <span data-bind="text: OptionName"></span>
                <br />
            </span>
        </td>
    </tr>
</table>

<input type="submit" name="send" value="Send" onclick="SetData();" />
}

<script type="text/javascript">
var viewModel = {
    pageOptions: ko.observableArray([{"OptionCode":1,"OptionName":"Option 1","IsChecked":true},{"OptionCode":2,"OptionName":"Option 2","IsChecked":false},{"OptionCode":3,"OptionName":"Option 3","IsChecked":true},{"OptionCode":4,"OptionName":"Option 4","IsChecked":true}]),
    IsChecked: ko.observableArray()
    };

$(function() {
        ko.applyBindings(viewModel);
    });


function SetData() {
    alert('f');
    //         var ids = [];
   //                $.each(this.pageOptions(), function(n, item) {
   //                    if(item.IsChecked)
   //                    ids.push(item.OptionCode);
   //                });
   }

  </script>     

///
4

1 回答 1

0

IsChecked: ko.observableArray()

从未使用过。将 pageOptions 元素的 IsChecked 属性定义为 observable():

var viewModel = {
    pageOptions: ko.observableArray([{"OptionCode":1,"OptionName":"Option 1","IsChecked": ko.observable(true)},{"OptionCode":2,"OptionName":"Option 2","IsChecked": ko.observable(false)},{"OptionCode":3,"OptionName":"Option 3","IsChecked":ko.observable(true)},{"OptionCode":4,"OptionName":"Option 4","IsChecked":ko.observable(true)}]),
    IsChecked: ko.observableArray() ---> delete this, you don't need it
};

然后,在淘汰赛域之外,您可以通过以下方式访问这些值:

for(var i = 0; i < viewModel.pageOptions().length; i++) {
    if(viewModel.pageOptions()[i].IsChecked()) { 
        ---> the logic you want to use 
    }
}

只要复选框与 ko.observable() 数据绑定,Knockout 就会更新 JSON 对象的 IsChecked 属性。如果您只是使用值(真/假)进行数据绑定,则当用户选中或取消选中 html 控件时,该对象永远不会更新。

于 2012-10-16T17:29:51.320 回答