2013-07-11 23 views
0

我遇到了线路问题,在应用自定义绑定之前和之后Array的Record count是8,但是在调试绑定时它们Array是空的。由于数组为空,网格不显示任何内容。我究竟做错了什么?可观察项目在淘汰赛中具有零元素绑定

var vM = { 
      recordsCount: ko.observable(), 
      countries: ko.observableArray() 
     }; 
     $(function() { 

     getAllCountries(); 

     // Handler for .ready() called. 
     //alert(myns.JavaScript1); 
     //alert(myns.JavaScript1); 
     //alert(myns.JavaScript2); 

    }); 


    var serviceName = "/breeze/CountriesBreeze/"; 
    var manager = new breeze.EntityManager(serviceName); 

    /*** supporting functions ***/ 
    function getAllCountries() { 
     var query = breeze.EntityQuery.from("GetCountries"); 
     console.log("Getting Countries"); 
     return manager.executeQuery(query) 
      .then(function(data) { 
       vM.countries(data.results); 
       alert(vM.countries().length); 
       ko.applyBindings(vM); 
       alert(vM.countries().length); 
      }).fail(
       alert("Error getting Data") 
      ) 
    } 


</script> 
<div id="log"></div> 

]

    }"> 
     </table> 

回答

0

移动你的ko.applyBindings()陈述到这里:

var vM = { 
      recordsCount: ko.observable(), 
      countries: ko.observableArray() 
     }; 
     $(function() { 

     getAllCountries(); 

     // Handler for .ready() called. 
     //alert(myns.JavaScript1); 
     //alert(myns.JavaScript1); 
     //alert(myns.JavaScript2); 

    }); 

ko.applyBindings(vM); 

那我不知道,如果只是在做vM.countries(data.results)将工作,你可能需要或者迭代和推送每个值或做:

vM.countries(data.results) 
vM.countries.valueHasMutated()