这更像是一般的javascript闭包和范围函数,但我会在遇到它的角度上下文中询问它。假设我有以下控制器:
var Controller = function ($scope, factory) {
$scope.Letter = 'A';
/*
Some other code
.
.
.
*/
$scope.OnClick = function() {
console.log($scope.Letter);
SomethingWithCallBack('a param', 34, function() {
console.log($scope.Letter);
});
}
};
假设在更新$ scope.Letter的地方发生了某些事情,然后触发OnClick。 OnClick中的$ scope.Letter保留原始值。我可以通过将行更改为console.log(this.Letter);
来解决此问题。但是,我不能在SomethingWithCallBack()中的匿名函数内执行此操作。我目前通过为this.Letter
赋值变量来解决问题,如下所示。
var myLetter = this.letter;
SomethingWithCallBack('a param', 34, function() {
console.log(myLetter);
});
是否有某种方法可以引用"外部这个"在回调中,所以我不必分配变量?
答案 0 :(得分:1)
当您编写javascript
时,这是一个经典问题您需要做的就是在附加事件侦听器之前将其存储在另一个变量中。
var that = this;
SomethingWithCallBack('a param', 34, function() {
console.log(that.myLetter);
});