पर प्रासंगिक बेला तो फिर करने के लिए पारित करने के लिए है। कुछ परिदृश्यों का परीक्षण करने के लिए, मैं करने के लिए संदेश पुश करने के लिए गुंजाइश पर एक सरणी बनाया:
function returnAPromise(valToReturn){
return $q(function(resolve, reject){
$timeout(function(){
resolve(valToReturn);
}, 500);
});
}
मैं तो एक है:
$scope.messages = [];
मैं एक समारोह के एक $ q समारोह के रूप में तो रिटर्न कि निर्धारित किया है परिणाम पर .then()
कॉल कि इस तरह दिखता है:
returnAPromise('third').then($scope.messages.push);
जब से मैं केवल मूल्य उस वादे सरणी के साथ हल किया गया था पुश करने के लिए चाहते हैं, तो मुझे लगता है मैं सिर्फ धक्का मुलाकात प्रेषित कर सकता है सोचा संदेशों सरणी के विभागाध्यक्ष, लेकिन जब मुझे लगता है कि, मैं निम्न त्रुटि मिलता है:
VM289 angular.js:12520 TypeError: Array.prototype.push called on null or undefined
at processQueue (VM289 angular.js:14792)
at VM289 angular.js:14808
at Scope.$eval (VM289 angular.js:16052)
at Scope.$digest (VM289 angular.js:15870)
at Scope.$apply (VM289 angular.js:16160)
at VM289 angular.js:17927
at completeOutstandingRequest (VM289 angular.js:5552)
at VM289 angular.js:5829
अगर मैं एक समारोह में धक्का लगा है, यह ठीक काम करता है:
returnAPromise('third').then(function(message){
$scope.messages.push(message)
});
यह एक बंद मुद्दा रहा है समझ में नहीं आता?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind उदाहरण अनुभाग मुद्दा और क्यों .bind का वर्णन करता है() यह हल करता है।दुर्भाग्य से, इसमें "नए जावास्क्रिप्ट प्रोग्रामर के लिए एक आम गलती" पंक्ति शामिल है। = [मुझे डिमोट किया गया है। – sonicblis