У меня есть фабрика, которая выполняет HTTP-вызов и в this.password = null
вызове ошибки я хочу установить свойство значение, например this.password = null
но this.password
не указывает на пароль.
С другой стороны, когда я делаю POST, данные отправляются штрафом: password: this.password
Объем свойства пароля должен быть другим? Или мне что-то не хватает?
.factory('LogInService', function($http) {
return {
username: null,
password: null,
logIn: function() {
return $http({
method: 'POST',
url: 'http://my-domain/api/signin',
data: {
username: this.username,
password: this.password
}
})
.then(
function(success){
},
function(err){
// reset password field
this.password = null; // <-- not working
}
);
}
}
});
Я мог бы установить все свойства и методы в var, а затем вернуть его, но я предпочел бы метод выше. Я имею в виду:
var myService = {
// my property and methods...
}
errorCallBack = function(){
myService.password = null;
}
return myService;
У вас есть проблема. Должно быть достаточно легко сделать что-то подобное. Как всегда, непроверенный, но похоже, что это сработает.
.factory('LogInService', function($http) {
return {
username: null,
password: null,
logIn: function() {
var svc = this; //<----
return $http({
method: 'POST',
url: 'http://my-domain/api/signin',
data: {
username: svc.username, //<---
password: svc.password //<---
}
})
.then(
function(success){
},
function(err){
// reset password field
svc.password = null; //<----
}
);
}
}
});
Вам нужно узнать об this
.
Вы можете исправить свою проблему, используя функции стрелок, которые не меняют смысл this
.
Вы можете захотеть использовать Babel для компиляции вашего ES6-кода в ES5, чтобы браузеры хорошо себя чувствовали в своей современной кодовой базе.
var _this = this;
но доreturn
, внутри функцииlogIn
вlogIn
работает. Имеет смысл Спасибо