मेरे पास एक तत्व है जिसकी पूरी सामग्री को स्थानांतरित किया जा सकता है। ट्रांसक्लूजन ऐच्छिक है, इसलिए मैं इसके अंदरूनी हिस्सों को रहने दे सकता हूं लेकिन एक आंतरिक तत्व को ट्रांसक्लूड किया जा सकता है। आइए इसे क्रिया में देखें:

    <h4 class="modal-title" ng-transclude="title">
    Are you sure you want to remove this <span ng-transclude="innerType">good</span>
    </h4>

निर्देश परिभाषा में मेरे पास है:

    myApp.directive('confirmDeleteModal',function(){
    return {
        restrict:'E',
        transclude: {
           title:'?modalTitle',
           innerType:'?modalType',
        },
        templateUrl:'templates/confirm_delete_modal.html',
        scope: {
           obj:'=info',
        },
     }
   });

एचटीएमएल कोड ऐसा होगा:

  <confirm-delete-modal info="goodToBeDeleted">
     <modal-type>good</modal-type>
  </confirm-delete-modal>

जब मैं अपना कोड चलाता हूं, तो मुझे निम्न त्रुटि मिलती है: [ngTransclude:orphan].

मुझे क्या करना चाहिए? मैं AngularJS v1.5.8 . का उपयोग कर रहा हूं

5
rastemoh 11 अगस्त 2016, 10:38
क्या ट्रांसक्लूड सत्य पर सेट है? देखें docs.angularjs.org/error/ngTransclude/orphan
 – 
Zdenek Hatak
11 अगस्त 2016, 10:41
मैंने एक ऑब्जेक्ट पास किया है जिसमें मेरे स्लॉट हैं, इसलिए ट्रांसक्लूड को ट्रू पर सेट करने की कोई आवश्यकता नहीं है, [एपीआई संदर्भ] में मल्टी-स्लॉट ट्रांसक्लूज़न देखेंdocs.angularjs.org/api/ng/directive/ngTransclude
 – 
rastemoh
11 अगस्त 2016, 10:43
क्या आप HTML डोम प्रदान कर सकते हैं जो आपके निर्देश को कॉल करता है? और आपके निर्देश का पूरा विन्यास? और आखिरी बात, आप कोणीय के किस संस्करण का उपयोग करते हैं? क्योंकि 1.5 . से मल्टी स्लॉटिंग उपलब्ध है
 – 
Silvinus
11 अगस्त 2016, 10:47
मैंने बदलाव किए
 – 
rastemoh
11 अगस्त 2016, 10:57

1 उत्तर

सबसे बढ़िया उत्तर

आप मोडल-शीर्षक की फ़ॉल बैक सामग्री में एक अन्य निर्देश एनजी-ट्रांसक्लूड का उपयोग करते हैं। लेकिन एनजी-ट्रांसक्लूड स्पैन का "पैरेंट" बन जाता है और ट्रांसक्लूजन फंक्शन प्रदान नहीं करता है। मेरा सुझाव है कि आप अपने निर्देश को संशोधित करें और यह जानने के लिए isSlotFilled विधि का उपयोग करें कि शीर्षक भरा गया है या नहीं:

directive('confirmDeleteModal',function(){
return {
  restrict:'E',
  transclude: {
    title:'?modalTitle',
    innerType:'?modalType',
  },
  link: function(scope, elem, attrs, ctrl, trfn) {
    scope.titleFilled = trfn.isSlotFilled('title');
  },
  template:'<h4 class="modal-title" ng-transclude="title" ng-if="titleFilled"></h4>' +
           '<h4 class="modal-title" ng-if="!titleFilled">Are you sure you want to remove this <span ng-transclude="innerType">good</span></h4>',
  scope:{
      obj:'=info',
  }
 }
})

(https://plnkr.co/edit/k0RXLWbOvHdNc9WFpslz?p=preview)

1
Silvinus 11 अगस्त 2016, 13:05