私は次のものを持っています:
HTML
<div id="documentsList" data-bind="foreach: documents">
<span class="ui-icon ui-icon-document" data-bind="click: $root.onViewDocumentClick"></span>
</div>
ジャバスクリプト
documentViewModel = new function() {
var self = this;
self.documents = ko.observableArray([]); //Loaded elsewhere
self.onViewDocumentClick = function(data) {
var path = "/ViewDocument/0";
var url = path.replace("/0","/" + data.Id.ToString());
window.location = url;
}
}
$(function() {
$ko.applyBindings(documentViewModel,$("#documentsList")[0]);
});
私の問題は、ドキュメントがロードされてアイコンをクリックすると、ページのリロードが発生しますが、ページが実際に /ViewDocument/undefined をリロードしようとしていることを示しています...もちろん、ページがそうでないためエラーが発生します存在。
Knockout ではなく jQuery を介してクリック イベントを処理するように次の変更を加えると、問題なく動作します。
HTML
<span class="ui-icon ui-icon-document" data-bind="text: Id"></span>
ジャバスクリプト
$("#documentsList").on("click","span.ui-icon-document",function() {
var path = "/ViewDocument/0";
var url = path.replace("/0","/" + $(this).text());
window.location = url;
});
私は何が欠けていますか?
編集 ここに私の問題をデモするフィドルがあります:フィドルの例 div の名前を documentList2 に変更すると、正しい動作が表示されます。documentList のままにしておくと、エラーが表示されます。div名を変更した後は必ず実行してください