2016-04-22 11 views
5

मैं AngularJS के लिए नया हूँ में चर वादा अंदर घोषित उपयोग करने के लिए कैसे, मैं चर जो जावास्क्रिप्ट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 में वादा अंदर असाइन किया गया है एचटीएमएल से पहुँचा जा सकता का उपयोग करने की जरूरत है, लेकिन यह जावास्क्रिप्ट

+0

आप इसे वादे के बाहर तक नहीं पहुंचते हैं। आप भविष्य से मूल्य नहीं ला सकते हैं (जब तक आप समय यात्रा का आविष्कार नहीं करते)। – Bergi

उत्तर

6

वादे असीमित हैं undefined दिखा रहा है। समस्या यह है कि, जब आप 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 कोणीय-जागरूक है - यह जानता है कि, जब आपका कॉलबैक चलाया जाता है, तो उसे अपने पृष्ठ को रीफ्रेश/पेंट करने के लिए AngularJS को बताना होगा (और इस प्रकार डेटा अपडेट करें)।

1

क्योंकि आप नहीं जानते कि जब promise रिटर्न, तो यह नहीं आप के लिए तत्काल उपलब्ध console.log(this.data1);

में हो जाएगा आप callback के अंदर अपने डेटा का उपयोग कर सकते हैं।

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