カートを返す jquery ajax 呼び出しを実行しています。
function LoadCart(callback) {
$.ajax({
.....removed....
success: function(cart) {
callback(cart);
}
})
}
ビューモデルを設定し、ノックアウトにバインディングを適用させる機能があります..
function SetupViewModel(cart) {
cartViewModel = new CartViewModel(cart);
ko.applyBindings(cartViewModel);
}
これは、ページが読み込まれるときに完全に機能します。
しかし、カートからアイテムを削除すると..
var CartViewModel = function(data) {
.....removed....
self.deleteCartLine = function(cart) {
$.ajax({
...removed
success: function(response) {
$.jGrowl(response.Message, jGrowlOptions)
loadCart(SetupViewModel);
}
}
}
}
カートをロードして、CartViewModel を再度セットアップしようとしました。これは、 NOT_FOUND_ERR DOM Exception 8エラーが発生したときです。
これは、viewModel 自体から更新を実行しようとしているためですか (つまり、CartViewModel の存在後に LoadCart を呼び出す必要がありますか?
注: Knockout が動的な更新を提供することは承知しており、なぜカートを再度取得する必要があるのか不思議に思うでしょう。しかし、両方の場所 (ビュー モデルとサーバー側) で実行したくないサーバー側の計算があります。そのため、カートを再度取得してビュー モデルを更新する方が簡単です。