javascript - Angular $q 绑定(bind) this

标签 javascript angularjs promise

我在绑定(bind)时遇到问题 this里面的一个 promise 。我在 Angular 服务中有以下功能:

this.database_view_settings = {'habal':'1'}
this.init = function(){
console.log("1",this.database_view_settings)
return $q((resolve, reject) => {
console.log("2",this.database_view_settings)
    AuthenticationService.getToken().then(function(token){
    $http.get('/api/user/settings/database_view/get',{headers:{'id_token':token}})
    .success(function(data) {
        console.log("3",this.database_view_settings)
        this.database_view_settings = data;
        console.log("login",this.database_view_settings)
        resolve(this.database_view_settings)
    })
    .error(function(data) {
        console.log('Error: ' + data);
        reject(data)
    });
    }.bind(this))


    })
}.bind(this)

我的问题是在console.log 1 and 2时我看到我想要的{'habal':'1'}console.log 3我得到一个undefined我不明白为什么。

最佳答案

这会考虑添加到您的问题中的评论:

this.database_view_settings = { 'habal': '1' };

this.init = () => AuthenticationService.getToken()
  .then((token) => $http.get('/api/user/settings/database_view/get', { headers: { 'id_token': token } }))
  .then((data) => {
    this.database_view_settings = data;
    return data;
  });

然后,其他地方:

this.init().then((data) => {
  // do your stuff with data
}).catch((error) => {
  // oops...
})

关于javascript - Angular $q 绑定(bind) this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852930/

相关文章:

Javascript, Promise.then 返回值

javascript - 如何支持 Internet Explorer 11 中的 promise ?

javascript - Docker-compose 不会将本地文件夹中的测试文件复制到 Container 中,而是复制其他所有内容

javascript - 使用 Firebase 实现无限滚动?

javascript - 如何使用正则表达式与变量而不是字符串?

css - 添加和删​​除(切换) Bootstrap 选项卡的折叠类

javascript - 我如何在 angularjs promise 中解析这个结果

javascript - 当元素改变时如何执行函数? (没有设置间隔)

javascript - AngularJS 选择框在模型更改时不更新

Javascript Promise 不会解决