gpt4 book ai didi

javascript - Angular Provider/JS - 如何从 $http().then() 访问 'uncle method' ?

转载 作者:行者123 更新时间:2023-11-28 18:36:11 28 4
gpt4 key购买 nike

问题是我无法访问 set方法:

  this.$get = function( $http ) {

return
{
set: function(UserData)
{
this.user = UserData ;
localStorage.setItem('user', JSON.stringify( UserData ) );
},

get: function()
{
return this.user;
},

send: function(data)
{
$http.post(BASE_URL + 'user/login', data)
.then( function( res ){

// Error !

this.set(res.data);

console.log(this); // return window object

// Here i want to access to 'this.set()'
// but i get error: 'ypeError: this.set is not a function'

});
}
}
}

我寻找访问 this.set() 的解决方案

谢谢!

最佳答案

在回调之外保存 this 的副本并使用它。

this.$get = function ($http) {
return {

set: function (UserData) {
this.user = UserData;
localStorage.setItem('user', JSON.stringify(UserData));
},

get: function () {
return this.user;
},

send: function (data) {
var _this = this;
var url = BASE_URL + 'user/login';
$http.post(url, data).then(function (res) {
_this.set(res.data);
});
}

};
}

使用 ES6:

this.$get = function ($http) {
return {

set(UserData) {
this.user = UserData;
localStorage.setItem('user', JSON.stringify(UserData));
},

get() {
return this.user;
},

send(data) {
let url = BASE_URL + 'user/login';
$http.post(url, data).then(res => {
this.set(res.data);
});
}

};
}

关于javascript - Angular Provider/JS - 如何从 $http().then() 访问 'uncle method' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37034063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com