2016-07-26 9 views
6

मैं एनजी शो और एनजी-हाइड निर्देशों का उपयोग कर का उपयोग कर कई की स्थिति में सुधार करने के लिए कोशिश कर रहा हूँ का उपयोग कर एक सरल हालत में कई शर्तें प्रबंधन कर सकते हैं, यहाँ मेरी कोडकैसे हम एनजी शो और एनजी-हाइड

एचटीएमएल कोड है

<my-directive controls="a,b,c"></my-directive> 

js कोड

.directive('myDirective',function(){ 
    return{ 
    restrict:'E', 
    templateUrl:"parentHtml.html", 
    link:function(scope,elem,attr){ 
     var options = attr.controls; 
     if(options=="a,b,c"){ 
     scope.showMeAll=true; 
     }else if(options=="a"){ 
     scope.showmeA=true; 
     }else if(options=="b"){ 
     scope.showmeB=true; 
     }else if(options=="c"){ 
     scope.showmeC=true; 
     } 
    } 
    } 
}).directive('subDirective',function(){ 
    return{ 
    restrict:'E', 
    template:"<h2>aapple</h2>", 
    link:function(scope,elem,attr){ 

    } 
    } 
}).directive('subDirective1',function(){ 
    return{ 
    restrict:'E', 
    template:"<h2>BBatt</h2>", 
    link:function(scope,elem,attr){ 

    } 
    } 
}).directive('subDirective2',function(){ 
    return{ 
    restrict:'E', 
    template:"<h2>CCat</h2>", 
    link:function(scope,elem,attr){ 

    } 
    } 
}); 

उसके ई मेरी parentHtml.html कोड

<div class="row"> 
    <div ng-show="showMeAll"> 
    <sub-directive></sub-directive> 
    </div> 
    <div ng-show="showMeB"> 
    <sub-directive1></sub-directive1> 
    </div> 
    <div ng-show="showMeC"> 
    <sub-directive2></sub-directive2> 
    </div> 
</div> 

है जब मैं निर्देश विशेषता के लिए सभी तीन "एक, ख, ग" दे मेरे समस्या है तो "parentHtml" में सभी तीन div के दिखाने के लिए, अगर मैं केवल दो यानी "ए, बी" दें, फिर माता-पिता में केवल दो div को यानी "सेब" और "बल्ले" दिखाना होगा और यदि केवल एक स्ट्रिंग यानी "सी" देना है तो पैरेंट एचटीएमएल में केवल "बिल्ली" div को दिखाना होगा एक सरल तरीका अगर मैं निर्देशक विशेषता को वर्णित वर्णमाला को क्या दिखाता हूं। यहां मेरा http://plnkr.co/edit/6gAyAi63Ni4Z7l0DP5qm?p=preview है। कृपया मेरे प्रश्न को सरल तरीके से हल करें।

अग्रिम धन्यवाद

+1

के बजाय पता चल सके कि 'controls' विशेषता के मान एक पत्र जैसे समान हो जाता है:

यहाँ अपने निर्देश में काम करने का संस्करण है' विकल्प = = "ए" 'आपको यह जांचना चाहिए कि इसमें उस अक्षर 'विकल्प हैं .indexOf (" a ")! == -1'। – Titus

+0

यह एक कामकाजी संस्करण है http://plnkr.co/edit/ERdku20aXECxbP30OlP3?p=preview 'if (...) के अलावा अगर (...) ...' त्रुटियों में आपके पास कुछ वर्तनी त्रुटियां भी थीं, आप 'शोमे ...' के बजाय 'शोमे ...' का उपयोग कर रहे थे। – Titus

उत्तर

2

आपके पास showmeA, showmeB, etc. की बजाय कुछ वर्तनी त्रुटियां हैं, यह showMeA, showMeB, etc.me को अपरकेस M के साथ होना चाहिए।

इसके अलावा, आपके चेक समझ में नहीं आते हैं, आप if..else if चेक का उपयोग कर रहे हैं जिसका अर्थ है कि मूल्यांकन एक स्थिति के ठीक होने पर ही बंद हो जाएगा।

इसके अलावा, आपको यह जांचना चाहिए कि conditions विशेषता का मान एक पत्र के बराबर है या नहीं, इसके बजाय एक पत्र होता है।

directive('myDirective',function(){ 
    return{ 
    restrict:'E', 
    templateUrl:"parentHtml.html", 
    link:function(scope,elem,attr){ 
     var options = attr.controls; 
     if(options.indexOf("a") !== -1){ 
     scope.showMeA=true; 
     } 
     if(options.indexOf("b") !== -1){ 
     scope.showMeB=true; 
     } 
     if(options.indexOf("c") !== -1){ 
     scope.showMeC=true; 
     } 
     scope.showMeAll = scope.showMeB && scope.showMeA && scope.showMeC; 
    } 
} 
}) 

और HERE एक डेमो

+0

यह पूरी तरह से काम कर रहा है लेकिन जब हम नियंत्रण में केवल "ए" देते हैं तो यह "सेब" नहीं दिखा रहा है, शेष सभी अच्छी तरह से आ रहे हैं @ टिटस – Midhunsai

+0

@ मिधुनसाई ऐसा इसलिए है क्योंकि, आप टेम्पलेट में हैं, आपने "एप्लेट" सेट किया है जब दिखाया जाए कि 'showMeAll' को' सत्य 'पर सेट किया गया है, तो आपको इसे बदलने की आवश्यकता होगी ताकि जब' showMeA 'सत्य हो या "showMeAll' को सत्य पर सेट करने के लिए निर्देश को बदल दें तो केवल" ऐप्पल "दिखाएगा, ए' चुना गया है – Titus

+0

हाँ यह काम कर रहा है, धन्यवाद @ टिटस – Midhunsai

3

अपने सभी divs कि चादर के निर्देशों एनजी शो है, तो कोड होना चाहिए:

if(options=="a,b,c"){ 
    scope.showMeAll=true; 
    scope.showMeA=true; 
    scope.showMeB=true; 
    scope.showMeC=true; 
} 

parnet div को सच करने के लिए एनजी शो की स्थापना करके, अभ्यस्त अन्य प्रदर्शित बच्चे divs जिसमें एनजी शो है। बाल divs माता पिता से स्वतंत्र एनजी शो है।

संबंधित मुद्दे