无法使用knockout.js将Json绑定到TreeTable Js

时间:2013-10-18 01:21:07

标签: javascript json

我正在使用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调用)时从服务器重新加载数据。数据重复。

1 个答案:

答案 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 });