2012-07-22 11 views
12

मैं इस एक कोशिश की:मैं knockout.js में सशर्त बाध्यकारी कैसे बना सकता हूं?

<div data-bind="attr: {class: itemSelected? 'selected' : 'unselected' }"></div> 

लेकिन यह काम नहीं करता है :)

+1

क्या आपने आइटम के बीच एक सफेद जगह के साथ प्रयास किया है और "?" attr: {class: item चयनित? 'चयनित': 'अचयनित'} –

+0

क्या "व्हाइटस्पेस" का अर्थ knockout.js में है? – ozz

+0

यह तब होता है जब यह चर से प्रश्न चिह्न को अलग करता है। – Tyrsius

उत्तर

21

मान लिया जाये कि आप इस है:

function viewModel() { 
    this.itemSelected = ko.observable(true); 
} 
ko.applyBindings(new viewModel());​ 

एक() जोड़े के बाद itemSelected के वर्तमान मूल्य प्राप्त करने के लिए ध्यान देने योग्य है कि आप टर्नरी ऑपरेटर के साथ उपयोग कर सकते हैं:

<div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>​

http://jsfiddle.net/RK7Ty/


आप इस के बजाय कर सकता है आप गैर चयनित राज्य के लिए नहीं चुना जाता वर्ग को निर्दिष्ट करना नहीं दिए थे:

<div data-bind="css: { selected: itemSelected }"></div>​ 

http://jsfiddle.net/RK7Ty/1/

0

मेरे लिए काम किया के बाद, मैं दोनों सीएसएस और आईडी विशेषताओं का उपयोग कर रहा था, मेरे लिए यह काम नहीं करता है अगर सीएसएस विशेषता पहली नहीं है, तो सीएसएस विशेषता को अपनी मुट्ठी के रूप में रखें।

<div class="panel-collapse collapse" data-bind="css:{in:$index()==0}, attr: { id:'collapse'+$index()} "> 

... 
... 
... 

</div> 
संबंधित मुद्दे