2012-12-04 109 views
2

我有這樣的代碼作爲全球整個頁面:Knockout.js ObservableArray沒有約束力

<script type="text/javascript"> 
    var data = []; 
    var VM_FiltroSeguros = 
     { 
      seguros: ko.observableArray(data) 
     }; 
    ko.applyBindings(VM_FiltroSeguros.seguros); 
</script> 

然後當一個succesfull AJAX調用時,執行這樣的:

function okFiltrarSeguros(data) 
    { 
     var parsedData = parse(data); 
     if (parsedData.Ok) 
     { 
      toastr.success('Se encontraron ' + parsedData.Value.length.toString() + ' Seguros.'); 

      $('#liResultsFiltroSeguro').show(); 

      VM_FiltroSeguros.seguros = parsedData.Value; 
}; 

的HTML是這些:

<table class="table table-hover"> 
        <thead> 
         <tr> 
          <th>Ramo</th> 
          <th>Poliza</th> 
         </tr> 
        </thead> 
        <tbody data-bind="foreach: seguros"> 
        <tr> 
         <td><span data-bind="text: NroRamo"></span></td> 
         <td><span data-bind="text: NroSeguro"></span></td> 
        </tr> 
        </tbody> 
        </table> 

之後VM_FiltroSeguros.seguros = parsedData.Value;被執行,我可以在調試器中看到viewModel填充了對象,但是從不更新。 什麼可能是錯的?謝謝!!!!

回答

4

這裏有幾件事情你做錯了。首先,您需要將整個視圖模型綁定:

var data = []; 
var VM_FiltroSeguros = 
{ 
    seguros: ko.observableArray(data) 
}; 
ko.applyBindings(VM_FiltroSeguros); 

然後,你需要將數據與函數調用像這樣添加到「SEGUROS」屬性:

VM_FiltroSeguros.seguros(parsedData.Value); 
+0

謝謝,首先我想你的代碼並沒有工作。但我試圖把代碼而不是在,它的工作原理! – Juan