Javascript AngularJS中超时后没有更新数据
我对AngularJS中的绑定有疑问。这是我的代码示例:Javascript AngularJS中超时后没有更新数据,javascript,angularjs,data-binding,Javascript,Angularjs,Data Binding,我对AngularJS中的绑定有疑问。这是我的代码示例: .controller("user", function(){ this.test = 'hi!'; this.getCourseSeriesProducts = function(){ setTimeout(function(){ alert(this.test); this.test = 'bye'; alert
.controller("user", function(){
this.test = 'hi!';
this.getCourseSeriesProducts = function(){
setTimeout(function(){
alert(this.test);
this.test = 'bye';
alert(this.test);
},3000);
}
});
问题是,在setTimeout
之后的第一个警报中,结果未定义,但理论上应该有“hi!”价值因此,当我将结果更改为“再见”时,屏幕上的值不会更改,仍然是“嗨!”。发生了什么事?请参见下面的演示,
使用$timeout代替setTimeout,您需要调用函数来执行它
var-app=angular.module('app',[]);
app.controller('homeCtrl',函数($scope,$timeout){
var测试='hi!';
this.getCourseSeriesProducts=函数(){
$timeout(函数(){
警报(测试);
测试=‘再见’;
警报(测试);
}, 300);
}
这个.getCourseSeriesProducts();
});代码>
使用此关键字时要小心。在你的职责范围内
this.getCourseSeriesProducts,上下文已更改,因此这与首次定义this.test时引用的上下文不同。
我建议放一些console.log(这个)来理解。好的,我理解你的意思,但我不知道如何在timeout函数中更改这个值。好的!我得到了它!只需在函数末尾写入.bind(this)
。谢谢@komo