मैं थिंग फैक्ट्री को HTTP अनुरोध करने की कोशिश कर रहा हूं और अपने नियंत्रक में प्रतिक्रिया का उपयोग करने में सक्षम हूं।मुझे अपने कारखाने में angular.copy का उपयोग करने की आवश्यकता क्यों है?
मेरे कारखाने में मैं
angular.copy(data, arr)
क्या करना है। बसarr = data
काम नहीं कर रहा है। ऐसा क्यों है?angular.copy()
बस ए)arr
से सब कुछ हटा देता है और बी)data
के माध्यम से पुनरावृत्त करता है औरarr
पर सामान असाइन करता है। उस औरarr = data
के बीच एकमात्र अंतर की एक नई प्रति के बजायarr
अंकdata
पर है। यह बात क्यों होगी? और क्यों मैं क्या समझ सेarr = data.slice(0)
काम (नहीं है, यह बहुत ज्यादा है एक हीangular.copy)
के रूप में?सबसे अच्छा तरीका है अपने लक्ष्य को पूरा करने के लिए क्या है? (ठीक से कारखाना)
का उपयोग main.html
<div class="container">
<div class="page-header">
<h1>Test App</h1>
</div>
<ul>
<li ng-repeat="thing in things">{{thing.name}}</li>
</ul>
</div>
main.controller.js
'use strict';
angular.module('testApp')
.factory('Thing', function($http) {
var arr = [];
return {
things: arr,
get: function() {
$http.get('/api/things').success(function(data) {
angular.copy(data, arr); // this works
// arr = data; but this doesn't
// arr = data.slice(0); and neither does this
});
}
};
})
.controller('MainCtrl', function ($scope, Thing) {
Thing.get();
$scope.things = Thing.things;
});
कोणीय.copy ऑब्जेक्ट्स या सरणी के लिए काम करता है, क्या डेटा किसी ऑब्जेक्ट से होता है? बीटीडब्ल्यू आपको उछाल का उपयोग करना चाहिए और अपने एनन कार्यों को नामित कार्यों में निकालना चाहिए और फ़ंक्शन का नाम कारखाने और नियंत्रक विधि में पास करना चाहिए। मॉड्यूल के घटकों को समझना बहुत आसान बनाता है। – Robert
'डेटा' ऑब्जेक्ट्स की एक सरणी है। –
यह काम करता है क्योंकि एआर (सरणी) एक संदर्भ है, और आपको स्कोप बाइंडिंग को काम करने के लिए संदर्भ को संरक्षित करने की आवश्यकता है।अन्यथा, आप एक नए संदर्भ के साथ सिर्फ ओवरराइटिंग एआर हैं - जो संदर्भ के मुकाबले पूरी तरह से अलग वस्तु है जो मूल रूप से दायरे से बंधे थे। – pixelbits