2012-10-24 9 views
16

मैं समझता हूँ के रूप में, $index उपलब्ध है अंदर एक foreach: बंधन, वस्तु का सूचकांक दे ... मैं एक click: बाध्यकारी उदा click:foo, मुझे foo के अंदर $index तक पहुंचने की आवश्यकता है।

क्या कोई तरीका है?

उत्तर

9

हाँ,

<input type="button" data-bind="click: function(data, event) { myClickHandler($index, data, event); }"/> 
+0

यह दुखद लेकिन सच है। – jessegavin

+0

मैं क्लिक, ब्लर्स के लिए डिफ़ॉल्ट हैंडलर से सहमत हूं और इसलिए डेटा और ईवेंट की बजाय अधिक जानकारी पास करनी चाहिए। अगर मैं उपरोक्त त्वरित धोखाधड़ी समाधान में अच्छी तरह से फिट नहीं होता है तो मैं खुद को बाध्यकारी का उपयोग करता हूं। – ethermal

36

के बजाय अपने बंधन के भीतर एक समारोह के माध्यम से उसके चारों ओर हैकिंग, तो आप सिर्फ बाध्यकारी संदर्भ पाने की जरूरत है। जब तक आपके पास बाध्यकारी से जुड़े डीओएम तत्व तक पहुंच हो, तब तक आप ko.contextFor() फ़ंक्शन का उपयोग करके बाध्यकारी संदर्भ और उसके सभी गुण प्राप्त कर सकते हैं।

आपके हैंडलर में प्राप्त होने वाली ईवेंट ऑब्जेक्ट आपको target संपत्ति के माध्यम से नोड तक पहुंच प्रदान करती है। इसका उपयोग कर संदर्भ लें।

var viewModel = { 
    foo: function (data, event) { 
     var context = ko.contextFor(event.target); 
     // do stuff with context.$index() 
    } 
}; 
+3

चूंकि '$ इंडेक्स' एक अवलोकन योग्य है, इसलिए मुझे 'संदर्भ' $ इंडेक्स()' कोष्ठक के साथ करना था, क्योंकि अवलोकन योग्य नॉकआउट में कार्य हैं http://goo.gl/TIGYV1 – andrewcockerham

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