0
此代码是在KnockoutJS视图模型:KnockoutJS:功能范围错误
function myViewModel()
{
this.prop1 = ko.observable(123);
this.prop2 = ko.observable("Hello");
..
..
}
myViewModel.prototype.func1 = function()
{
alert(this.prop1()); //works fine here
myTimer = setTimeout(function()
{
alert(this.prop1()); //this.prop1() raises an undefined error
}, 3000); //from console: Uncaught TypeError: undefined is not a function
};
为什么没有财产的计时器回调中识别?看起来像一个范围问题,但我似乎无法解决它。
你好Jeroen,并感谢一百万;它做到了。你建议我在另一篇文章中阅读JavaScript范围,但遗憾的是,我没有。我从来没有完全理解self关键字。非常感谢你。 – iSofia 2014-10-28 08:09:17
很高兴帮助。即使你没有时间阅读它(这是一个密集的话题),只要记住始终用'var self = this;'开始你的视图模型构造函数,并且在所有地方都使用'self'而不是'this',你将会幸免于难。 – Jeroen 2014-10-28 08:14:47
我一定会那样做。感谢您的提示和解决方案。你是一个拯救生命的人,Jeroen。 – iSofia 2014-10-28 08:39:26