2012-06-01 131 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

你是对的,它是说错误...我编辑我的代码上面,但是,它仍然无法正常工作,并且错误不断显示 –