मैं एंगुलरजेएस का एक नया उपयोगकर्ता हूं और जब मैं एक नियंत्रक में एक चर से एनजी-दोहराना के अंदर निर्देश से एक चर तक पहुंच प्राप्त करता हूं तो मैं अटक जाता हूं। मुझे लगता है कि इसे स्कॉप्स से संबंधित कुछ होना चाहिए।एनजी-दोहराना के अंदर निर्देश से नियंत्रक दायरे तक कैसे पहुंचे?
यहाँ मेरी बेला है: http://jsfiddle.net/Zzb58/1/
'MyCtrl' गुंजाइश दो गुण है: "आइटम", एक सरणी, और "बात", बस एक स्ट्रिंग।
function MyCtrl($scope) {
$scope.items = [{id: 'item1'}, {id: 'item2'}];
$scope.thing = "thing";
}
तो, अगर मैं एक निर्देश बना सकते हैं और मैं इसे सरणी की सामग्री पढ़ना चाहते हैं, यह एक पूरी तरह से काम करता है:
<div my-directive ng-repeat="item in items" item='item'></div>
app.directive('myDirective', function() {
return {
restrict: 'AE',
scope: {
item: '=item',
},
template: '<div>{{ item.id }}</div>'
}
});
एचटीएमएल ठीक से ताज़ा किया जाता है।
लेकिन यदि मैं निर्देश से "चीज़" चर तक पहुंचने का प्रयास करता हूं, तो इसे हमेशा "अपरिभाषित" के रूप में पढ़ा जाता है।
app.directive('myDirective', function() {
return {
restrict: 'AE',
scope: {
item: '=item',
thing: '='
},
template: '<div>{{ item.id }} - Here is not the {{thing}}</div>'
}
});
मुझे लगता है कि समस्या एनजी-दोहराने, या हो सकता है चर सही ढंग से बाध्य नहीं किया जा रहा है में बनाया गुंजाइश बच्चे से संबंधित माना जाता है।
हालांकि, अगर मैं टेम्पलेट में $ parent.thing का उपयोग करता हूं, तो चर को पढ़ा जाता है और इसका मूल्यांकन ठीक से किया जाता है, लेकिन मुझे नहीं पता कि वह $ माता-पिता एनजी-दोहराव का दायरा या 'MyCtrl' गुंजाइश है या नहीं।
1) मैं गलत क्या कर रहा हूं?
2) HTML तत्व की विशेषता के रूप में "आइटम" तत्व को ng-repeat में पढ़ने की आवश्यकता क्यों है? मैंने पहली बार सोचा था कि "आइटम" मूल दायरे में थे, इसलिए जब निर्देश का पृथक गुंजाइश बनाया गया है, तो मुझे बस "आइटम: '='" जैसे कुछ करना होगा।
यदि आप '=' का उपयोग करते हैं तो आपको 'चीज़ = "चीज़" जैसी विशेषता उत्तीर्ण करनी होगी। – elclanrs