2012-01-16 19 views
8
क्लिक करें

से कॉलम मैं इस तरह एक तालिका में एक पंक्ति के लिए क्लिक करें बाध्य करने के लिए नॉकआउट उपयोग करने के लिए कोशिश कर रहा हूँ बाहर करना चाहते हैं:Knockoutjs - टेबल पंक्ति बाध्यकारी क्लिक करें, घटना

<tr data-bind="click: $root.selectItem"> 

यह काम करता है महान। समस्या तब होती है जब मैं कुछ कॉलम को क्लिक एक्शन लेने से बाहर करने का प्रयास करता हूं। मैं अपनी पंक्ति में बटन संपादित और हटा चुका हूं और मैं नहीं चाहता कि वे selectItem क्लिक ईवेंट को फायर कर दें। क्या मुझे बस सभी टीडी को बांधना होगा, मैं क्लिक इवेंट पर इस तरह से व्यवहार करना चाहता हूं या क्या ऐसा करने का कोई आसान तरीका है?

यहाँ फिडल: http://jsfiddle.net/blankasaurus/WYKEM/

उत्तर

20

अद्यतन: http://jsfiddle.net/kevinobee/Q25ja/2/

मूल:: के रूप में केविन Obee ने सुझाव दिया और इस नमूने में प्रदर्शन आप click बंधन के साथ बंधन clickBubble: false एक अतिरिक्त के रूप में जोड़कर एक कस्टम बंधन से बचने आप कर सकते हैं कस्टम बाध्यकारी का उपयोग करें जो click बाध्यकारी को लपेटता है और अतिरिक्त घटनाओं को होने से रोकता है। यह लग सकता है जैसे: http://jsfiddle.net/rniemeyer/xj7Hs/

+2

+1 महान समाधान:

ko.bindingHandlers.clickAndStop = { init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) { var handler = ko.utils.unwrapObservable(valueAccessor()), newValueAccessor = function() { return function(data, event) { handler.call(viewModel, data, event); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); }; }; ko.bindingHandlers.click.init(element, newValueAccessor, allBindingsAccessor, viewModel, context); } }; 

यहां एक नमूना है! –

+0

यह एक बहुत सुविधाजनक समाधान है। –

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