मैं जावास्क्रिप्ट का एक सा है:KnockoutJS मूल्य टॉगल
function ViewModel() {
var self = this;
self.highlight = ko.observable(true);
}
ko.applyBindings(new ViewModel());
और एचटीएमएल कि यह पूरक:
<div data-bind="css: { highlighted: highlight }, click: highlight(!highlight())">
random string
</div>
मैं क्या हासिल करने की कोशिश कर रहा हूँ:
- सीएसएस क्लास 'हाइलाइट किया गया' केवल तभी सक्रिय किया जा सकता है जब var हाइलाइट सही हो
- क्लिक करना div वर हाइलाइट का bool मूल्य टॉगल करेगा
- वांटेड परिणाम: सक्रिय करने के लिए div पर क्लिक/निष्क्रिय अपने सीएसएस वर्ग
क्या मैं हो रही है:
- आकर्षण का प्रारंभिक मूल्य
true
है, फिर भी सीएसएस वर्ग निष्क्रिय हो जाता है (यदि मैं प्रारंभिक मानfalse
पर बदलता हूं, तो सीएसएस क्लास सक्रिय है: ऐसा लगता है कि मैंने किसी भी तरह से क्लिक बाध्य ट्रिगर किया है जब मैंने अभी तक कुछ भी क्लिक नहीं किया है) - div की सीएसएस कक्षा टॉगल नहीं है
पर क्लिक करें, मैं व्यूमोडेल के अंदर एक नया संबंधित क्लिक फ़ंक्शन नहीं बनाऊंगा। मैं देख रहा हूं कि थोड़ा सा कोड के लिए मैं डेटा-बाइंड के भीतर पूरी तरह से इनलाइन रख सकता हूं।
यहाँ JSFiddle पर कोड है: http://jsfiddle.net/4wt4x/1/
किसी को भी व्याख्या कर सकते हैं क्या हो रहा है और मैं गलत तरीके से क्या कर रही हूं?
उत्तर के लिए धन्यवाद। क्या डेटा के भीतर अकेले ऐसा करने का कोई तरीका नहीं है? यदि संभव हो तो मैं यही देख रहा हूं। – dk123
मैं व्यक्तिगत रूप से बाध्यकारी में ऐसा कुछ डालने के लिए इसे खराब अभ्यास मानता हूं। पूरा बिंदु अपने दृश्य को अपने जावास्क्रिप्ट से अलग रखना है। हालांकि, अगर आप वास्तव में ऐसा चाहते हैं, तो आप केवल बाध्यकारी के लिए क्लिक करें: फ़ंक्शन (स्वयं) {self.highlight (! Self.highlight())}, लेकिन मैं अनुशंसा नहीं करता क्योंकि बाद में डीबगिंग समाप्त हो जाएगी केवल एक के बजाय दो स्थानों में जावास्क्रिप्ट ढूंढना है। यह कई योगदानकर्ताओं के साथ बड़ी परियोजनाओं के साथ एक मुद्दा बन जाता है। –
उत्तर के लिए धन्यवाद और दृश्य संरचना पर अतिरिक्त टिप्पणी। मैं आपके विचार के साथ जाऊंगा और जावास्क्रिप्ट के भीतर समारोह बनाउंगा। धन्यवाद! – dk123