2014-04-17 8 views
6

मैं इस कोड मिला सशर्त है मल्टीपल क्लासों जोड़ें:एनजी स्तरीय, जहां वर्गों में से एक

ng-class="{selectedHeader: key == selectedCol}" 

यह काम करता है, लेकिन मैं भी एक वर्ग के रूप में 'कुंजी' मूल्य जोड़ने भी चाहते हैं, Ive की कोशिश की :

ng-class="[{selectedHeader: key == selectedCol}, key]" 

लेकिन यह काम नहीं करेगा, क्या कोई इसे हल करने के बारे में जानता है?

उत्तर

3

आप हमेशा key चाहते हैं एक वर्ग के रूप में जोड़ा जा करने के लिए:

ng-class="{selectedHeader: key == selectedCol, key: true]" 

या तुम सिर्फ एक class विशेषता में डाल सकते हैं {{}} प्रक्षेप के साथ।

ng-class="{selectedHeader: key == selectedCol}" class="{{key}}" 

बस पूर्णता के लिए, यह selectedCol के बराबर है, तो अगर आप केवल यह शामिल करना चाहते हैं:

ng-class="{selectedHeader: key == selectedCol, key: key == selectedCol}" 
+1

धन्यवाद, लेकिन समस्या यह है, कुंजी है: सत्य और कुंजी: कुंजी == selectedCol सिर्फ वर्ग 'कुंजी' और नहीं मूल्य जोड़ देगा। आपने जोर से सोचा है कि वर्ग = "{{key}}" काम करेगा और यह लगभग काम करता है। लेकिन किसी कारण से, एनजी-स्कोप एनजी-बाइंडिंग यूई-रेजिजेबल जैसे अन्य वर्गों को जोड़ा जाएगा यदि मैं कक्षा = "{{key}}" के साथ जाता हूं ....कोई विचार नहीं – Jukke

+0

आह ... आप 'कुंजी: सत्य' के बारे में सही हैं: यह वर्ग 'कुंजी' जोड़ देगा। हालांकि अन्य गायब वर्गों के बारे में निश्चित नहीं है। –

+0

क्या आप इस तत्व पर अन्य कक्षाओं की आवश्यकता के बारे में विवरण पोस्ट कर सकते हैं, और तत्वों पर नहीं होने के कारण उनके द्वारा कौन सी समस्याएं उत्पन्न होती हैं? –

1

आप इसे द्वारा

ng-class="{selectedHeader: key == selectedCol}" class="{{key}}" 
+1

अपना समय लेने के लिए धन्यवाद, और जैसा कि मैंने दूसरे उत्तर पर टिप्पणी की: आपने जोर से कक्षा = "{{key}}" काम करेगा और यह लगभग काम करता है। लेकिन किसी कारण से, एनजी-स्कोप एनजी-बाइंडिंग यूई-रेजिजेबल जैसे अन्य वर्गों को जोड़ा जाएगा यदि मैं कक्षा = "{{key}}" के साथ जाता हूं .... कोई विचार नहीं – Jukke

+0

आपका मतलब है कि निर्देश को ' class' –

3

कर सकते हैं आप $scope तरीकों का उपयोग कर इस संभाल सकता उन गतिशील वर्ग के नामों को परिभाषित करने के लिए। यह कुछ इस तरह दिखेगा:

नियंत्रक:

$scope.selectedCol = 3; 
$scope.key = 3; 

// dynamic ng-class values 
$scope.selectedHeader = function() { 
    if ($scope.selectedCol === $scope.key) 
     return 'header-selected'; 
    else 
     return false; 
}; 

// selected header definition for ng-class 
$scope.headerKey = function() { 
    return 'header-' + $scope.key; 
}; 

दृश्य:

<header ng-class="[ selectedHeader(), headerKey() ]"> 
    <h1>Header element</h1> 
</header> 

परिणाम:

<header ng-class="[ selectedHeader(), headerKey() ]" class="header-selected header-3"> 
     <h1>Header element</h1> 
</header> 
1

मुझे लगता है कि आप जो खोज रहे हैं वह है: ng-class="{ {{key}}:{{key}} }"

यह भी ध्यान रखें कि सीएसएस कक्षाएं किसी संख्या से शुरू नहीं होनी चाहिए, इसलिए आपको अपने मुख्य मूल्य को उपसर्ग करने की आवश्यकता हो सकती है।

0

इस प्रयास करें:

class="{{key}} ng-class:{'selectedHeader': key == selectedCol}; 
0

यह काम नहीं करेगा क्योंकि {selectedHeader: कुंजी == selectedCol} स्ट्रिंग के रूप एक वस्तु के रूप में मूल्यांकन किया जाएगा और नहीं:

ng-class="[{selectedHeader: key == selectedCol}, key]" 

निम्नलिखित कोड काम , यह वर्ग 'चयनित हैडर' और कुंजी का मूल्य जोड़ देगा:

ng-class="[key == selectedCol ? 'selectedHeader' : '', key]" 
2

// single class 
 
<div ng-class="{'myclass' : condition}"> 
 
</div> 
 
    
 
// multiple class 
 
<div ng-class="{'myclass1': condition1, 'myclass2': condition2}"> 
 
some content 
 
</div>

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