2016-09-07 3 views
0

これはかなりシンプルなはずですが、私はコモを初めて知っていますが、結果を得ることができないようです。ノックアウトでraw apiデータを表示

私は単純に好きなことでHTMLテキストを持っているAPIを呼び出して表示するために私のビューモデルに機能を追加したい:

<p class="class">This is my text</p> 

ビュー/ページはKOを使用してテキストを呼び出し、のようなものが表示されますこれは:

<span data-bind="text: myText"></span> 

私は関数内で$ .getJSONリクエストを使用しています。本当にこれを行うための最も簡単な方法が必要です。ありがとうスタッカー。

答えて

1

テキストを読み込むAJAX呼び出しを意味しますか?

ビューモデルを設定してからバインディングを適用し、最後にajax呼び出しの結果を設定する必要があります。

data-bind='html:

document.viewModel = { MyText: ko.observable() }; 
 

 
ko.applyBindingsToDescendants(document.viewModel, document.getElementById("content")); 
 

 
//make your ajax call and handle the result 
 
//$.getJSON('/some/url', function(data){` 
 
    //document.viewModel.MyText(data); 
 
    document.viewModel.MyText('<p class="class">This is my text</p>'); 
 
//});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<div id="content"> 
 
    <span data-bind="html: MyText"></span> 
 
</div>

+0

感謝をバインドを設定することを忘れないでください - として、問題の原因となっている私のアプリでなければなりません:「結合HTMLを処理することができません:(){返すのMyText}関数"メッセージ: 'MyText'は未定義です。 –

+0

これはうまくいきましたが、私のAPIを追加すると「同じ要素に複数のバインディングを適用することはできません」というメッセージが表示されます。何か案は?試したko.cleanNode($ element [0]); –

+0

正確な問題は、エラー状態として、_applyBindings_で既に呼び出されたノード(または子ノード)に複数のバインディングを適用していることです。 –

関連する問題