2017-01-25 14 views
-1

私はしばらくこの問題を解決してきました。私はノックアウトに新しいです。ノックアウトhtmlテーブルへのForeachバインディングが機能しない

ノックアウトを使って表示したいテーブルがあるhtmlページがあります。私が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"を表示すると、自分のデータを表示します。私は迷っている!

+0

ようこそそれはあなたが有効なオブジェクト(この場合は配列)にその文字列を有効にする必要があり、文字列

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

を与えられていますスタックオーバーフロー!あなたの質問の完全な内容は、リンクされているだけでなく**あなたの質問で**なければなりません。リンクが腐って、将来の質問やその回答が役に立たなくなり、人々はあなたを助けるためにオフサイトに行く必要はありません。スタックスニペット( '<>'ツールバーボタン)を使って実行可能にする(ノックアウトをサポートする)のが理想的です。詳細:[*どのように良い質問をしますか*](/ help/how-to-ask) –

+0

私の質問の完全な内容はここにあります - 私のコードもすべて含める必要がありますか? – malmalz

+0

はい、おそらくコンテンツの中で最も重要な部分です。上記のリンクを参照してください。 –

答えて

-1

あなたはテキストをサーバーに求めました。 (文字列データを使用して)

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

ライブ例:https://jsfiddle.net/xtw3nf8q/4/

+0

今どこかで私はコンソールに間違いがあります! "SyntaxError:missing:after property id" これを今すぐご覧ください。お知らせいたします!あなたのお返事ありがとうございます! – malmalz

+0

@malmalzは無関係です - あなたが投稿したコードにはidプロパティはありません。私はあなたのデータを取って、それを文字列にして、この作品を証明しました - https://jsfiddle.net/xtw3nf8q/4/ – Jamiec

+0

はい、あなたは正しく私は何か愚かなことをしました! – malmalz

関連する問題