我正在执行一个返回购物车的 jquery ajax 调用和
function LoadCart(callback) {
$.ajax({
.....removed....
success: function(cart) {
callback(cart);
}
})
}
我有一个函数可以设置视图模型并让 Knockout 应用绑定..
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 本身执行刷新(即 LoadCart 需要在存在 CartViewModel 之后调用?
注意我知道 Knockout 提供了动态更新,人们会想知道为什么您需要再次检索购物车。但是我不想在两个地方(视图模型和服务器端)都执行服务器端计算 - 所以再次抓住购物车并更新视图模型会更容易。