2017-03-17 144 views
1

Im新的淘汰賽,即時通訊試圖顯示一個包含mt數據庫的數據表。 在我的控制器,(DriversController),我有這樣的代碼:Knockout.js applyBindings和getJson不顯示?

public JsonResult GetAllDrivers() 
    { 
     db.Configuration.ProxyCreationEnabled = false; 
     List<Driver> drivers = db.Drivers.ToList(); 
     return Json(drivers, JsonRequestBehavior.AllowGet); 
    } 

在我的索引HTML(CSHTML):

<table> 
         <thead> 
          <tr> 
           <th>Driver Id</th> 
           <th>Name</th> 
          </tr> 
         </thead> 
         <tbody data-bind="foreach: drivers"> 
          <tr> 
           <td data-bind="text: DriverId"></td> 
           <td data-bind="text: firstName"></td> 
          </tr> 
        </table> 

在 「文本:」 字段是完全一樣,他們都在數據庫表。

我的視圖模型:

<script> 
         var drivers 

         $.getJSON("/Drivers/GetAllDrivers", function (data) { 
          drivers = data 
          ko.applyBindings(drivers) 
         }) 
        </script> 

ID,後面有很多的教程,做他們做了什麼,但不知何故沒有什麼工作:(我得到一個空白頁,只有cointains表頭 幫助的感謝

+0

瀏覽器控制檯中的任何錯誤?記錄數據可能它是空的... console.info(data) – tire0011

+0

'foreach:drivers'意味着你的模型包含一個名爲'drivers'的屬性(也是一個數組),但事實並非如此,因爲你的根viewmodel本身*是驅動程序的數組。或者換成'foreach:$ root'或者改變你的模型使驅動程序數組在'drivers'屬性中:'ko.applyBindings({drivers:drivers})' – haim770

回答

1

數據必須看起來像

{drivers:[{DriverId:1,firstName:'test'}]} 

因此您的代碼更改爲:

ko.applyBindings({drivers:data})