2012-02-01 21 views
5

पर काम नहीं कर रहा है चेकबॉक्स डेटा-बाध्यकारी मान तब नहीं बदल रहा है जब मैं चेकबॉक्स की क्लिक घटना को ट्रिगर करने का प्रयास करता हूं।नॉकआउट में बाध्यकारी चेकबॉक्स ट्रिगर ईवेंट

मैंने एक jsfiddle बनाया है, जब मैं बटन पर क्लिक करता हूं तो मुझे लगता है कि मूल्य बदलने के लिए बाध्य है लेकिन नहीं।

http://jsfiddle.net/2T9QZ/13/

किसी भी मदद की?

उत्तर

4

jQuery में कॉलिंग ट्रिगर ("क्लिक") बस आपके "क्लिक" ईवेंट हैंडलर को ट्रिगर करता है। यह वास्तव में चेकबॉक्स पर एक क्लिक (और इस प्रकार चेक किए गए राज्य में परिवर्तन) का कारण नहीं बनता है - केवल ऐसा ही होता है जब ऐसा कुछ ऐसा होता है जहां तत्व में फ़ंक्शन प्रॉपर्टी होती है जिसे ईवेंट के समान नाम दिया जाता है (उदाहरण के लिए form.submit() - लेकिन checkbox.click() नहीं है)।

लेकिन जब से तुम नॉकआउट का उपयोग कर रहे हैं, तो आप के रूप में अच्छी तरह से कर सकते हैं:

var viewModel = { 
    IsSelected: ko.observable(false) // Initially false 
}; 

ko.applyBindings(viewModel); 


$('#buttonInput').click(function(){ 
    viewModel.IsSelected(true); // <------- 
    // Or, in order to toggle: 
    // viewModel.IsSelected(!viewModel.IsSelected()); 
}); 

काफी पहली जगह में नॉकआउट का उपयोग करने का बात है कि। व्यू मॉडल पर अपने बदलाव करें, न कि दृश्य। चूंकि चेकबॉक्स की checked संपत्ति IsSelected पर डेटा है, IsSelected बदलकर चेकबॉक्स की checked संपत्ति बदल जाएगी।

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