knockoutjs刷新或更新

时间:2015-05-01 10:09:43

标签: ajax knockout.js

我尝试创建一个ajax-refresh购物车面板。我的购物车已列出但我无法在$ .getJSON回调函数中刷新它。我的观点和代码是;

var cartViewModel = {
    Currencies: ko.observableArray()
};

$(function () {
    ShowCart();
});

function AddToCart(i, a) {
    $.getJSON('@Url.Action("AddToCart", "Products")/' + i + '?Amount=' + a, null, function (d) {
        if (d)
            ShowCart();
    });
}
function ShowCart() {
    $.getJSON('@Url.Action("GetCart","Products")', null, function (c) {
        cartViewModel.Currencies = ko.observableArray(c);
        cartViewModel.Currencies.valueHasMutated();
        ko.applyBindings(cartViewModel);
    });
}

$.getJSON

如何刷新{{1}}回调中的绑定?

1 个答案:

答案 0 :(得分:3)

我认为你的问题是你在视图模型中覆盖了observable。

您需要做的就是将新值传递给现有的observable。

请改为尝试:

function ShowCart() {
    $.getJSON('@Url.Action("GetCart","Products")', null, function (c) {
        cartViewModel.Currencies(c);
    });
}