के भीतर बाल निर्देश संलग्न करें मेरे पास एक मूल निर्देश है जहां मैं लिंक फ़ंक्शन में गतिशील रूप से बाल निर्देश जोड़ना चाहता हूं। बच्चे के निर्देश^^ माता-पिता की आवश्यकता है डायरेक्टिव। मैं किसी भी HTML तत्व को जोड़ने में सक्षम हूं लेकिन जैसे ही मैं अपने बच्चे के निर्देश को संकलित करने की कोशिश करता हूं, मुझे निम्न त्रुटि मिलती है कि यह आवश्यक नियंत्रक नहीं ढूंढ सकता है। यदि मैं मैन्युअल रूप से बाल निर्देश जोड़ता हूं तो यह पूरी तरह से काम करता है।माता-पिता निर्देश
त्रुटि:
Error: [$compile:ctreq] Controller 'myInput', required by directive 'myKey', can't be found!
मेरे टेम्पलेट तत्वों को जोड़ने के बाद इस तरह दिखना चाहिए:
<myInput>
<myKey></myKey> <-- added dynamically
<myKey></myKey> <-- added dynamically
<myKey></myKey> <-- added dynamically
....
</myInput>
myInput निर्देश:
angular.module('myModule').directive('myInput', ['$log', '$templateCache', '$compile', function($log, $templateCache, $compile) {
return {
restrict: 'E',
transclude: true,
scope: {
service: '=', // expects a stimulus object provided by the tatoolStimulusService
onkeydown: '&' // method called on key press
},
controller: ['$scope', function($scope) {
this.addKey = function(keyCode, value) {
$scope.service.addInputKey(keyCode, { givenResponse: value });
};
}],
link: function (scope, element, attr) {
// add keys directives
angular.forEach(scope.service.registeredKeyInputs, function(value, key) {
var keyEl = angular.element(
$compile('<myKey code="'+ key +'" response="'+ value.response +'"></myKey >')($rootScope));
element.children(":first").append(keyEl);
});
},
template: '<div ng-transclude></div>'
};
}]);
MyKey निर्देश:
angular.module('myModule').directive('myKey', ['$log', '$sce', function($log, $sce) {
return {
restrict: 'E',
scope: {},
require: '^myInput',
link: function (scope, element, attr, myCtrl) {
myCtrl.addKey(attr.code, attr.response);
// ...
},
template: '<div class="key"><span ng-bind-html="key"></span></div>'
};
}]);
कि पूरी तरह से काम करता है और यहां तक कि कोई मतलब है (हालांकि इस पर दस्तावेज मदद करेगा)। मैं केवल पोस्ट में डमी नामों का उपयोग कर रहा था लेकिन आप सांप-केस के साथ बिल्कुल सही हैं। एक बार फिर धन्यवाद। – jimmy
मुझे दस्तावेज़ीकरण के बारे में पता नहीं है, लेकिन समझना आसान है। जब तक डोम तत्व को डीओएम पेड़ में जोड़ा जाता है, तब तक ** ** में माता-पिता नहीं होते हैं (इसकी 'parentNode' प्रॉपर्टी' null' है)। जब कोणीय '^ myInput' की तलाश करता है तो यह डीओएम पेड़ को तब तक चलाता है जब तक कि उसे आवश्यक निर्देश के साथ नोड मिल जाए। हमारे मामले में यह तुरंत विफल हो जाता है, क्योंकि तत्व में एक एकल पैरेंट नोड नहीं होता है। – dfsq