4

我正在尝试理解 KnockoutJS。在执行某些代码期间,我想要一个微调器。但是为什么微调器只在操作后才出现呢?

<img data-bind="visible: isLoading" src="loading.gif">

<a href="#" data-bind="click: someOperation">Click</a>

<script type="text/javascript" src="knockout-2.2.1.js"></script>
<script>
var ViewModel = function() {
    var self = this;
    self.isLoading = ko.observable(false);
    self.someOperation = function() {
        self.isLoading(true); 
        for(i = 0; i < 30000; i++)
            console.log('lol');
        self.isLoading(false);      
    };
};

ko.applyBindings(new ViewModel());
</script>

谢谢,费多尔

4

1 回答 1

2

编辑:第一个答案是错误的!

在 chrome 中,控制台是异步的,并且 console.log() 没有在预期的地方发生。

使用 setTimeout 工作正常。看到这个小提琴Fiddle

var ViewModel = function() {
    var self = this;
    self.isLoading = ko.observable(false);
    self.someOperation = function() {
        self.isLoading(true);
        window.setTimeout(function() { self.isLoading(false) }, 1000);
        //for(i = 0; i < 30000; i++)
       //     console.log('lol');
        ///self.isLoading(false);      
    };
};

ko.applyBindings(new ViewModel());
于 2013-05-08T05:41:00.053 回答