[英]Knockout and checked data-bind
在這種情況下,我很想獲得所選的復選框:
<div id='main'>
<table>
<tbody data-bind="foreach: Years">
<tr>
<td>
<input type="checkbox" data.bind="checked: $root.SelectedYears"/>
</td>
<td><span data-bind="text: descr" />
</td>
</tr>
</tbody>
</table>
<br>
<input type="button" value="Click!" data-bind="click: count">
<div/>
function vm() {
this.Years =
[
{
code: "2011",
descr: "descr 2011"
},
{
code: "2012",
descr: "descr 2012"
},
{
code: "2013",
descr: "descr 2013"
},
{
code: "2014",
descr: "descr 2014"
}
];
this.SelectedYears = ko.observableArray(this.Years);
count = function()
{
alert(this.SelectedYears.length);
};
return this;
}
ko.applyBindings(new vm());
http://jsfiddle.net/angelobadellino/UXKt9/
當我點擊按鈕時,我的SelectedYears集合為空。 它應該用所選的復選框填充。
你能幫我理解我錯在哪里嗎?
SelectedYears
是一個ko.observableArray
,它本身不是一個數組,即使它公開了一些Array
方法。 但是沒有length
屬性。 要獲取實際數組並檢索大小,請使用:
alert(this.SelectedYears().length);
但是,其余代碼可能無法按預期工作,因為您無法使用帶有這樣的數組的已checked
綁定:
data.bind="checked: $root.SelectedYears"
檢查需要評估為true或false的內容,您可以考慮將可寫的計算observable綁定到SelectedYears
數組的復選框。
嘗試:
alert(this.SelectedYears().length);
這是一個可觀察的,所以你需要把它稱為一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.