2016-07-06 75 views
0

我有一個Ko模型被初始化,它有一個observableArray,然後在稍後的日期數據被填充。但是UI似乎不承認更改。我最初使用的是不可觀察的數組,因爲在添加或刪除項目時沒有任何東西被觸發。幫助不大。ko.observableArray不UI未更新。

我初始化數據數組以供日後使用 var Data = [];

$(function() 
{ 
    KoAppViewModel = { 
     SF: ko.observableArray(Data), 
     selected: ko.observable("") 
    }; 
    ko.applyBindings(KoAppViewModel); 
}) 

每個新項目添加到陣列

function searchColumns(columnName, displayValue) { 
     return { 
      columnName: columnName, 
      displayValue: displayValue 

     }; 
    } 

本節只作用於一個點後,以填充數組中的代碼。

function Initialize Fields() { 
     data = [ 
      new searchColumns("sub", "Subs"), 
      new searchColumns("ck", "Check"), 
      new searchColumns("Ntes", "Notes"), 

     ]; 
    ko.utils.arrayPushAll(Data, data); 
    } 

繼承人存在Html的存根,它迭代數組並填充UL。 如果我用數據初始化數組,但在以後添加它,似乎可以忽略它。我試圖循環,並單獨添加它們也沒有成功。

<ul data-bind="foreach:SF"> 
         <li style="list-style-type:none;"> 
          <input type="radio" data-bind="checkedValue: columnName, checked: $parent.selected" name="SearchFieldstyu" />&nbsp; 
          <span data-bind="text: displayValue"></span> 
         </li> 
        </ul> 

回答

0

只是忘了在填充它後添加valueWillMutate()和valueHasMutated()到底層數組。

function Initialize Fields() { 
     data = [ 
      new searchColumns("sub", "Subs"), 
      new searchColumns("ck", "Check"), 
      new searchColumns("Ntes", "Notes"), 

     ]; 



KoAppViewModel.SF.valueWillMutate(); 



ko.utils.arrayPushAll(Data, data); 
    } 

KoAppViewModel.SF.valueHasMutated();