我正在使用TreeTable插件: http://ludo.cubicphuse.nl/jquery-treetable/#examples
<table id="example-basic">
<thead>
<tr>
<th>Name</th> <th>Status</th> <th>id</th>
</tr>
</thead>
<tbody data-bind="foreach: TreeView">
<tr data-bind="attr: { 'data-tt-id': id ,'data-tt-parent-id': Parentid}">
<td data-bind="text: Name"></td>
<td data-bind="text: Status"></td>
<td data-bind="text: id"></td>
</tr>
</tbody>
</table>
<button type="button" name="test" onclick="test()"></button>
如果我按原样使用HardCode,结果将显示为格式良好的TreeView。
ko.applyBindings({ TreeView: [{ "id": "1", "Parentid": null, "Name": "test1", "Status": "OK" }, { "id": "2", "Parentid": 1, "Name": "test2", "Status": "OK" }] }
但是,我从服务器获取值(将服务器获取的值放在“str”变量中)并执行如下绑定:
str = '[{ "id": "1", "Parentid": null, "Name": "parent1", "Status": "OK" }, { "id": "2", "Parentid": 1, "Name": "child1", "Status": "OK" }]',
json = JSON.stringify(eval("(" + str + ")")),
ko.applyBindings({ TreeView: json})
function reload() {
//ko.applyBindings({ TreeView: {} });
str = '[{ "id": "1", "Parentid": null, "Name": "parent1", "Status": "OK" }]'
json = JSON.parse(str),
ko.applyBindings({ TreeView: json})
我收到以下错误:
错误:无法解析绑定。
消息:ReferenceError:'id'未定义;
绑定值:attr: { 'data-tt-id': id ,'data-tt-parent-id': Parentid}
有人可以帮忙。谢谢! 返回的Json对象必须转换为string类型然后进行解析。这解决了上述问题
新发行: 我只是玩弄treetable插件。我希望在按钮点击(或每5秒一次ajax调用)时从服务器重新加载数据。数据重复。
答案 0 :(得分:0)
您正在对JSON进行字符串化而不是解析它,并在您不需要时使用eval()
。相反,只需使用JSON.parse()
。
var str = '[{ "id": "1", "Parentid": null, "Name": "parent1", "Status": "OK" }, { "id": "2", "Parentid": 1, "Name": "child1", "Status": "OK" }]';
var json = JSON.parse(str);
ko.applyBindings({ TreeView: json });