Knockout Foreach绑定到html表不起作用

时间:2017-01-25 17:01:10

标签: javascript jquery json ajax knockout.js

我一直在研究这个问题。我是Knockout的新手。

我有一个html页面,其中包含我想要使用Knockout显示的表格。如果我硬编码JSON数组,它的工作原理!当我使用$ .getJSON函数时,它不起作用。

一点背景:我不能在这个项目中使用任何服务器端语言 - 正在使用不允许服务器端的CMS。

我从我下载的数据表中获取JSON,然后将其传递给它以使显示,样式等自动化,以便用户所要做的就是使用html表上传文件,其余的都是照顾。

如果有更简单的方法,我绝对愿意接受建议。我的问题是:如何显示foreach数据?

这是我的一些测试数据: https://jsfiddle.net/xtw3nf8q/

HTML

<table>     
<tbody data-bind="foreach: teststuff">    
<tr>
        <td data-bind="text: $data.testone"></td>            
        <td data-bind="text: $data.testtwo"></td>
        <td data-bind="text: $data.testthree"></td>
        <td data-bind="text: $data.testfour"></td>
        <td data-bind="text: $data.testfive"></td>
        <td data-bind="text: $data.testsix"></td>
        <td data-bind="text: $data.testseven"></td>
    </tr>
</tbody>

的jQuery /敲除

$.getJSON( "/echo/json/jsonfile.txt", function( data ) {
ko.applyBindings({
teststuff: data
});
});

这是jsonfile.txt的内容:

[{"testone":"Number","testtwo":"49","testthree":"49","testfour":"49","testfive":"49","testsix":"49","testseven":""},{"testone":"Reporting","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"0.0 %"},{"testone":"Area","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":""},{"testone":"K. BACA","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"D. GRAY","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"J. ISA","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"Number","testtwo":"49","testthree":"49","testfour":"49","testfive":"49","testsix":"49","testseven":""},{"testone":"Reporting","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"0.0 %"},{"testone":"Area","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":""},{"testone":"T. BARK","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"H. LAND","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"F. JONES","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"},{"testone":"D. KNOWLES","testtwo":"0","testthree":"0","testfour":"0","testfive":"0","testsix":"0","testseven":"N/A"}]

我下载了Chrome的KnockoutJS插件/扩展程序以帮助调试,这让我明白了这一点。现在开发人员控制台中没有错误;当我在console.log“data”时,它会显示我的数据。我不知所措!

1 个答案:

答案 0 :(得分:-1)

您已向服务器询问了文字!它给你一个字符串

##

您需要将该字符串转换为有效对象(在本例中为数组):

$.getJSON( "/echo/json/jsonfile.txt", ....

实例(使用字符串数据):https://jsfiddle.net/xtw3nf8q/4/