knockoutjs数据保存UI问题



在我的web应用程序,而我正在更新一些数据,我需要在网页中显示一些加载旋转gif。这是我的代码。

这是我的html代码

<img src="../../../../Content/images/submit-gif.gif" class="hidegif" data-bind="visible: isWaiting"/>
<button data-bind="click: createNew">Save</button>

在我的knockoutjs模型中我有这个

self.isWaiting = ko.observable(false);
self.createNew = function () {
            this.isWaiting(true);
                        $.getJSON("/Admin/Material/GetFolders", function (allData) {
                            this.isWaiting(true);
                            var mappedFolders = $.map(allData, function (item) { return new Folder(item); });
                            self.folders(mappedFolders);
                            this.isWaiting(false);
                        }).success(function () { this.isWaiting(false); }).error(function () { }).complete(function () { this.isWaiting(false); }); ;
        };

我有一个名为isWaiting的属性。在调用服务器之前,我将其设置为true。在完成和后续方法中,我将其设置回false。所以基于这个,我的纺车应该出现和消失。

但这不起作用。

Thanks In Advance

this将在createNewcallback函数中具有另一个上下文。你应该使用self而不是this来访问视图模型的属性:

self.createNew = function () {
    self.isWaiting(true);
    $.getJSON("/Admin/Material/GetFolders", function (allData) {
        self.isWaiting(true);
        var mappedFolders = $.map(allData, function (item) { return new Folder(item); });
        self.folders(mappedFolders);
        self.isWaiting(false);
    }).success(function () { 
        self.isWaiting(false); 
    }).error(function () {})
    .complete(function () {   
        self.isWaiting(false); 
    }); 
};

最新更新