knockout.js。加载微调器仅在操作后出现

时间:2013-05-08 05:09:37

标签: knockout.js

我正在努力了解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>

谢谢, 费多尔

1 个答案:

答案 0 :(得分: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());