<img src="http://www.aero-sa.com/images/ajax-loader.gif" data-bind="visible:loading" />
var model = function() {
var self = this;
this.loading = ko.observable(true);
setTimeout(function() {
self.loading(false);
}, 4000);
}
ko.applyBindings(new model());
我对上面的代码几乎没有疑问。这里的this
关键字是什么? 这个表示什么?当我写代码时,图像没有得到隐藏....为什么这个关键字不能正常工作setTimeout。
var model = function() {
//var self = this;
this.loading = ko.observable(true);
setTimeout(function() {
this.loading(false);
}, 4000);
}
ko.applyBindings(new model());
请尽可能解释。
答案 0 :(得分:3)
答案 1 :(得分:1)
第二个this
无效,因为您更改了this
有效的上下文...第二个this
仅对setTimeout
函数内的属性有效。
这样可行:
var model = function() {
var self = this;
self.loading = ko.observable(true);
setTimeout(function() {
self.loading(false);
}, 4000);
}
ko.applyBindings(new model());
答案 2 :(得分:1)
在setTimeout中,'this'上下文是 Window 对象。 其中setTimeout的 this outsite是模型类构造函数。 所以你必须使用:
var self = this;
然后在setTimeout里面使用self而不是this。