2016-04-22 5 views
5

私はAngularJSに新しいですして約束の内部で宣言された変数にアクセスするためにどのように、私はHTMLからアクセスすることができますJavascriptをはAngularJS

this.reqData= this.profileService.getData(); 
var resp1 = angular.fromJson(this.reqData); 
this.data1; 

var that = this; 
resp1.$promise.then(function (data) { 
    that.data1= data.resource.resource; 
}).catch(function (error) { 
    console.log(error); 
}); 

console.log(this.data1); 

変数DATA1に約束の内側に割り当てられた変数にアクセスする必要があるが、それをJavascriptにundefinedを表示しています。

+0

あなたは約束の外にアクセスしません。あなたは将来からの価値を取り出すことはできません(あなたが時間旅行を創造しない限り)。 – Bergi

答えて

6

約束事は非同期です。問題は、console.logにアクセスしたとき、$promise.thenコードがまだ実行されていないことです。が約束するまで待つ必要があります。にアクセスしてください。

あなたが値に適用する任意の操作がコールバック内部を行わなければならないあなたがthenに渡している機能:

resp1.$promise.then(function (data) { 
    var data1 = data.resource.resource; 
    // do all your processing on data1 *here* 
    console.log(data1); 
}).catch(function (error) { 
    console.log(error); 
}); 

AngularJSそれを取得するとき、あなたのHTMLを更新することができますデータは、$promiseがAngular-awareであるため、コールバックが実行されると、AngularJSにページをリフレッシュ/ペイントしてデータを更新するよう通知する必要があります。

1

ときpromise戻り、あなたは知らないので、それはあなたがcallback内のデータにアクセスすることができますconsole.log(this.data1);

にあなたのためにすぐに利用できませんので。

resp1.$promise.then(function (data) { 
    that.data1= data.resource.resource; 
    }).catch(function (error) { 
    console.log(error); 
});