AngularJS: एक विशेषता के माध्यम से संलग्न निर्देश में टीडी से पाठ प्राप्त करना और नियंत्रक $ स्कोप में घटना को बढ़ाने?

मुझे लगता है कि एक छोटा मुद्दा है। मैंने एक निर्देश बनाया है और एक मौजूदा डीआईवी पर एक विशेषता के माध्यम से निर्देश डाला है, नीचे देखें।

<td my-directive>This Text I want to get hold of in my directive</td>

और निर्देश यहां प्रदर्शित किया गया है। मैंने element.parent() के साथ खेलने की कोशिश की लेकिन यह काम नहीं लग रहा है।

.directive('myDirective', function() {
    return {
      template: '<div></div>',
      restrict: 'A',
      link: function(scope, element, attrs) {
        element.text(element.parent().text);//Doesn't work
      }
    };
  });

मैं चाहता हूं कि टीडी अपने सामान्य ऑपरेशन के साथ जारी रहे यानी टीडी तत्व के साथ पाठ प्रदर्शित करना। लेकिन यह खाली है, इसलिए मैंने निर्देश में इसे फिर से इंजेक्शन देने के बारे में सोचा, लेकिन यह खाली क्यों है?

असल में मैं जो करने की कोशिश कर रहा हूं वह निर्देश का कोई भी हिस्सा क्लिक किया गया है, मैं कुछ आंतरिक सामान करना चाहता हूं और उसके बाद नियंत्रक द्वारा साझा किए गए $ स्कोप पर एक ईवेंट बढ़ाता हूं।

      element.click(function(){
          //alert("direc clicked");
          scope.onClick()
      });

यकीन नहीं है कि मैं यह सही कर रहा हूँ।

किसी ने पहले यह किया है?

0

1 उत्तर

मुझे लगता है कि आपको अपने टेम्पलेट में ng-transclude जोड़ने की आवश्यकता है:

.directive('myDirective', function() {
  return {
    template: '<div ng-transclude></div>',
    transclude: true,
    restrict: 'A',
    link: function(scope, element, attrs) {
      element.text(element.parent().text);//Doesn't work
    }
  };
});

स्रोत

0
जोड़ा
त्रुटि: [ngTransclude: अनाथ] टेम्पलेट में ngTransclude निर्देश का अवैध उपयोग! कोई मूल निर्देश नहीं है जिसके लिए एक निष्कर्ष निकाला जाना आवश्यक है। तत्व: <div ng-transclude = "">>
जोड़ा लेखक Martin, स्रोत
अच्छा बेन, यह बहुत अच्छा काम करता है। धन्यवाद
जोड़ा लेखक Martin, स्रोत
क्या आप transclude: true के साथ पुनः प्रयास कर सकते हैं?
जोड़ा लेखक ben75, स्रोत