約束の中にバインドthis
の問題があります。
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
で私はconsole.log 3
で{'habal':'1'}
にしたいものを見る間、私はundefined
を取得し、私はその理由を理解していないということです:私は、角度サービスで、以下の機能を持っています。
?あなたは明らかにES6を使用しているので、すべての約束コールバックのために矢印を使用する必要があります。スニペットのフォーマットが間違っていて、どこに何があるのかは分かりません。しかし、コールバックごとに '.bind(this) 'を実行しない限り、あなたは必然的にある時点でレキシカルを失うことになります。 – estus
それはあなたが[The Forgotten Promise](http://taoofcode.net/promise-anti-patterns/#the-forgotten-promise:8f173b15e2d19515fdc8ce931ae539c0)に落ちたように見えます。 – sp00m
['.success'と' .error'メソッドは廃止され、AngularJSから削除されました](http://stackoverflow.com/questions/35329384/why-are-angular-http-success-error-methods-deprecated- v1-6/35331339#35331339から削除)。また、$ httpサービスがすでに約束を返すので、 '$ q(resolve、reject)'で約束を作る必要はありません。 – georgeawg