2012-05-11 56 views
3

我有一個看起來像這樣的Knockout.js視圖模型:綁定複選框陣列Knockout.js(MVC剃刀)

"UserName":null, 
"FirstName":null, 
"LastName":null, 
"Countries":{ 
    "arrCountries":[] 
} 

而且一組國家複選框,所有必須使用相同的data-bind呈現值(我正在使用this自定義CheckBoxListFor助手,它可以將自定義HTML應用到每個複選框,但它是每個複選框相同的自定義HTML。它需要一個屬性來列出我的剃鬚刀視圖模型中的每個可用國家以創建複選框,以及然後渲染一些基於另一個剃鬚刀視圖模型屬性標記)。

複選框值是整數(1,2,3等),它是我想要投入視圖模型的arrCountries屬性的整數。

這裏有一個複選框如何渲染,因爲它代表的時刻:

<input checked="checked" data_bind="checked: ???" id="Countries.arrCountries107" name="Countries.arrCountries" type="checkbox" value="1"></input> 

我已經證明使用viewModel.Countries.arrCountries.push(1);更新,讓我的計數,視圖模型(後跟警報的概念元素在arrCountries證明push工作),但我似乎無法獲得複選框上的HTML屬性data-bind連線,以便他們檢查和取消選中,因爲我發送pushremove命令。

任何幫助非常感謝!

回答

8

使選中的數據屬性指向選定的國家。如果複選框的值位於複選框數組中,則將檢查它。否則不會。

<input checked="checked" data-bind="checked: Countries" type="checkbox" value="3"></input> 

看看這把小提琴吧。

http://jsfiddle.net/u8xP9/3/

+0

感謝保羅!你的代碼讓我意識到,我的複選框上的數據綁定沒有被正確渲染(在渲染時,razor代碼中的'data_bind'通常被轉換爲'data-bind',但是在自定義的CheckBoxListFor控件上,那wasn沒有發生)。升級到控件的v.1.4.2.3(從v.1.3b開始)將其排除。有了這個固定的代碼,你的代碼就可以發揮出色!謝謝! – user1390429