ASP .NET MVC アプリケーションがあり、さらに Knockout 2.0.0 を使用しています。ノックアウトを使用してページにレンダリングしたい部分ビューを作成しました。パーシャルは Knockout foreach ステートメント内でレンダリングする必要があります。ノックアウト HTML バインディングを機能させることができないため、現在、ハックを使用して JQuery を使用して div に html を配置しています。
このページには多くの html があるため、すべてのソース コードを投稿することはできません。そのため、関連するコードを投稿してみます。
<div data-bind="foreach:issues">
@* SNIP - A lot of other html here*@
<div id="myPartialDiv" data-bind="html: $parent.getHtml(issueId())">
</div>
</div>
さらに下には、KO View Model に次の JavaScript 関数があります (ハックをコメントアウトし、HTML を返すコードを含めました)。
var getHtml = function (issueId) {
var baseUrl = '@Url.Action("GetHtmlAction","MyController")';
$.ajax(
{
type: "POST",
url: baseUrl,
data: "&issueId=" + issueId,
success: function (data) {
//$('#mypartialDiv').html(data);
return data;
},
error: function (req, status, error) {
//$('#myPartialDiv').html('Something went wrong.');
return 'Something went wrong.'
},
dataType: "text"
});
}
上記のコードでは、ページにレンダリングされるデータはありません。Chrome デバッグ ツールを使用すると、javascript エラーが発生していないことがわかります。ノックアウトは、div の html を getHtml 関数から返された結果にバインドしていないだけです。
私は何を間違っていますか?
ありがとう