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>
以下は、ハードコードをそのまま実行すると機能し、結果は適切にフォーマットされた 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 呼び出し) でサーバーからデータをリロードしたいと考えています。データが複製されます。