मैं एक कस्टम निर्देश बनाने की कोशिश कर रहा हूं जो इसकी सामग्री को ग्रिड के रूप में पुनर्व्यवस्थित करता है। मैं ng-repeat
निर्देश के परिणाम को स्थानांतरित करना चाहता हूं और फिर परिणामस्वरूप तत्वों को पुन: व्यवस्थित करना चाहता हूं।मैं अपने कस्टम निर्देश में बच्चों के तत्वों को दोहराने के लिए कैसे संभाल सकता हूं?
समस्या तब होती है जब मैं लिंक फ़ंक्शन के अंदर element.children()
विधि को कॉल करता हूं, मेरे पास एक खाली सरणी है क्योंकि ng-repeat
निर्देश अभी तक प्रस्तुत नहीं किया गया है और इसे एक टिप्पणी के रूप में व्याख्या किया गया है।
अन्यथा, यदि सामग्री 'स्थिर' है तो निर्देश महान काम करता है।
एचटीएमएल
<grid n='6'>
<div ng-repeat="i in [1,2,3]"></div>
</grid>
मेरी केवल कोड के दिलचस्प टुकड़े के साथ निर्देश:
app.directive('grid', [function() {
return {
restrict: 'E',
replace: true,
transclude: true,
template: "<div ng-transclude></div>",
link: function (scope, grid, attrs) {
// With an ngRepeat transcluded, els result in an empty array
var els = grid.children();
// ...
};
}]);
मैं क्या याद आ रही है?
अपने लिंक समारोह के भीतर आप $ timout (function() {// पहुँच ग्रिड बच्चों}, 0) का उपयोग कर प्रयास कर सकते हैं; – Chandermani
वह वास्तव में काम करता है, लेकिन क्या यह विधि विश्वसनीय है? –
असल में आप पोस्ट लिंक फ़ंक्शन के बाद बाल टेम्पलेट प्रदान करते हैं, इसलिए आपको $ टाइमआउट जोड़ने की ज़रूरत है, यह काम करेगा क्योंकि इसमें कुछ देरी शामिल है। – Chandermani