Je veux pouvoir appeler une fonction dans la portée de . Then, et pour cela, j'utilise la manière this.foo (). Mais si je fais cela à l'intérieur du . Then j'obtiens une erreur, puisque this semble être perdu. Que puis-je faire?
Dans ce code, cela équivaudrait à avoir la même sortie pour l'objet this
console.log(this)
one().then(function() {
console.log(this)
})
function one() {
var deferred = $q.defer();
deferred.resolve()
return deferred.promise;
}
Cela ne semble pas fonctionner
console.log(this)
var a = this;
one().then(function(a) {
console.log(a)
})
Votre deuxième exemple de code est la bonne façon de faire. Comme la portée change dans la nouvelle fonction, this
change également, vous avez donc raison de faire une référence à this
en dehors de la fonction.
Cela a échoué parce que la fonction utilise a
que vous avez transmise à la fonction plutôt que le a
global défini en dehors de celle-ci.
En d'autres termes:
var a = this;
one().then(function () {
console.log(a)
});