我正在努力了解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>
谢谢, 费多尔
答案 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());