2012-07-18 36 views
0

我有一個表單,它添加了一個新的人員記錄,並且還可以編輯他們的記錄。從列表中更新複選框數組

因此,當它是一個新記錄時,表格會顯示一個未經檢查的複選框列表,這些複選框對應於他們的資格。它們可以毫無困難地保存到數據庫中。

當我想編輯人員數據時,我可以獲取他們的資格作爲資格ID的分隔列表。因此,我想檢查表單上相應的複選框。

我想有一個映射/更新功能需要更新與人的數據obsevable複選框數組。

我已經設置了一個基本的jsFiddle但重要的一點缺失。

我想知道任何人都可以將我指向正確的方向嗎?

在此先感謝

+0

您是否以不同於我發佈的方式解決了您的問題?如果是這樣的話,你會介意分享嗎? – s0nica 2012-07-21 18:36:48

回答

0

下最初是由其他用戶,RPNiemeyer發佈,但此刻我不能檢索答案自定義綁定。 反正你可以找到以下內容:

定製結合被稱爲「checkedWithInit」這裏的HTML元素的檢查屬性方便地設置爲真僅僅是明確的:

<input id="yourId" type="checkbox" value="yourValue" data-bind="checkedWithInit: yourInitialStateVariable" checked="true" /> 

自定義代碼是在元素的「初始化」事件處理程序的「覆蓋」

ko.bindingHandlers.checkedWithInit = { 
     init: function(element, valueAccessor, allBindingsAccessor, context) { 
     var value = valueAccessor(); 
     if (element.checked) { 
      //if it is an array then push this value to it 
      if (value.push) { 
       value.push(element.value);     
      } else { //otherwise, just write the value 
       if (ko.isWriteableObservable(value)) { 
        value(element.checked); 
       } 
      } 
     } 
     //run the real checked binding's init function 
     ko.bindingHandlers.checked.init(element, valueAccessor, allBindingsAccessor, context); 
     }, 
     //always run the checked bindings update function 
     update: ko.bindingHandlers.checked.update 
    }; 

我希望這有助於

瓦萊里奧