簡體   English   中英

Knockout js復選框檢查綁定

[英]Knockout js checkbox checked binding

在淘汰賽中,我試圖對一組數據執行foreach以顯示復選框。 我遇到的問題是,在我與其中一個框交互之前,檢查的數據綁定似乎沒有運行。 例如,下面我生成5個文本框,其中沒有一個顯示為已選中。 然而,當我點擊“一個”時,“兩個”和“四個”也會被檢查,因為它們本應該從一開始。

使用Javascript:

var viewModel = {};

viewModel.choices = ["one", "two", "three", "four", "five"];
viewModel.selectedChoices = ko.observableArray(["two", "four"]);

viewModel.selectedChoicesDelimited = ko.dependentObservable(function () {
        return viewModel.selectedChoices().join(",");
    });

ko.applyBindings(viewModel);

HTML:

<ul class="options" data-bind="foreach: choices">
    <li><label><input type="checkbox" name="NotifyMembers" data-bind="checked: $parent.selectedChoices, attr: { value: $data }" /><span data-bind="text: $data"></span></label></li>
</ul>
<hr />
<div data-bind="text: selectedChoicesDelimited"></div>

小提琴在: http//jsfiddle.net/bvGG3/1/

謝謝你的幫助。

在版本3.0之前的Knockout中,綁定按順序觸發,因此您的問題是在您的attr綁定之前觸發了已checked綁定。

所以你需要改變綁定的順序:

<input type="checkbox" name="NotifyMembers" 
       data-bind="attr: { value: $data }, checked: $parent.selectedChoices" />

演示JSFiddle

或者,當您更新到3.0(演示JSFiddle )時,您的原始代碼將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM