0

我知道您不应该使用 Knockout JS 在模型内进行 DOM 操作,推荐的方法是使用 ko.bindingHandler.myDomManipulatingHandler。但是,如果模型中的一个方法调用 ajax,然后必须更新数据并操作 DOM,该怎么办。

我怎样才能做到这一点,但仍然保持干净的分色?

ViewModel = function ()
{
    var self = this;

    self.saveToServer = function ()
    {
        $.ajax(
        {
            url: "url to server",
            success: function ()
            {
                // data change code
                // dom manipulation code
            }
        });
    };
};
4

1 回答 1

0

这在很大程度上取决于您需要执行的特定 DOM 操作,但似乎您可以只更新相应的 observable。

var self = this,
    self.data = ko.observableArray();

/* snip */
    success: function () {
        ko.utils.arrayForEach(self.data(), function () {
        /* update values here */
于 2013-09-15T18:15:09.817 回答