2012-06-01 128 views
1

我有一個表「是」應該綁定一個JSON的結果,但它不工作,可能是什麼錯誤?JSON和淘汰賽

<table> 
<thead> 
    <tr> 
     <th> 
      Id 
     </th> 
     <th> 
      Number 
     </th> 
     <th> 
      Name 
     </th> 
     <th> 
      Password 
     </th> 
     <th> 
      Role 
     </th> 
    </tr> 
</thead> 
<tbody data-bind="foreach: model.Employees"> 
    <tr> 
     <td> 
      <span data-bind="text: EmployeeId"></span> 
     </td> 
     <td> 
      <span data-bind="text: EmployeeNumber"></span> 
     </td> 
     <td> 
      <span data-bind="text: EmployeeName"></span> 
     </td> 
     <td> 
      <span data-bind="text: EmployeePassword"></span> 
     </td> 
     <td> 
      <span data-bind="text: EmployeeRole"></span> 
     </td> 
    </tr> 
</tbody> 

我對於淘汰賽的腳本是這樣的:

<script type="text/javascript"> 
$(document).ready(function() { 
    var viewModel = {}; 
    var data = $.getJSON("Employees.json", function (data) { 
     viewModel= ko.mapping.fromJSON(data); 
     ko.applyBindings(viewModel); 
    } 
    ); 
}); 
</script> 

這裏是我的樣品返回的JSON數據:

{"Employees":[{"EmployeeId":1,"EmployeeName":X","EmployeeNumber":"1","EmployeePassword":"x","EmployeeRole":"User"},{"EmployeeId":10,"EmployeeName":"S","EmployeeNumber":"21","EmployeePassword":"s","EmployeeRole":"Admin"}]} 
+0

請在頂部加入這個跨度併發布它顯示的內容:'' –

+0

[使用knockout綁定json數據的可能重複](http://stackoverflow.com/questions/10842900 /結合-JS on-data-using-knockout) – 2012-06-04 17:39:49

+0

現在使用角度js .. ahaha!這樣長的淘汰賽......; p –

回答

4

如果你打開瀏覽器的錯誤控制檯我打賭你看到這樣的事情:

Uncaught Error: Unable to parse bindings. Message: ReferenceError: Employees is not defined; Bindings value: foreach: Employees

Employees沒有在viewModel上定義。但是,它的定義是viewModel.model。事情應該工作,如果您:

  1. data-bindmodel.Employees在foreach代替:

    <tbody data-bind="foreach: model.Employees"> 
    

    例子:http://jsfiddle.net/Ze2Zs/

  2. 將您的AJAX請求的結果直接viewModel代替viewModel.model

    viewModel = ko.mapping.fromJSON(data); 
    

    例子:http://jsfiddle.net/wHXeP/

另外,作爲一個側面說明沒有必要指定var data = $.getJSON(...)爲響應由回調函數來處理:

var viewModel = {}; 
$.getJSON("Employees.json", function (data) { 
    viewModel.model = ko.mapping.fromJSON(data); 
    ko.applyBindings(viewModel); 
}); 
+0

我在你的小提琴裏看到viewModel = ko.mapping.fromJSON(data);和 ko.applyBindings(viewModel);在var data = {}之外...但我的內部,是嗎? –

+0

我沒有注意到當我第一次看到這個問題。您應該可以擺脫AJAX請求之外的'var data',但apply綁定和viewModel代碼屬於回調函數。我有點不同,因爲我沒有提出AJAX請求。 –

+0

你是對的,它是說錯誤...我編輯我的代碼上面,但是,它仍然無法正常工作,並且錯誤不斷顯示 –