0

在我的网络应用程序中,当我更新一些数据时,我需要在网页中显示一些加载旋转 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。因此,基于此,我的纺车应该出现和消失。

但这不起作用。

提前致谢

4

1 回答 1

1

thiscreateNewandcallback函数中将有另一个上下文。您应该使用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); 
    }); 
};
于 2013-01-10T10:44:56.033 回答