2012-11-05 10 views
5

मैं knockout.js का उपयोग कर रहा हूं। मैं एक कस्टम बाध्यकारी बनाया है और इस तरह एंकर टैग पर लागू कर दिया गया:कैसे नॉकआउट कस्टम बाइंडिंग अपडेट फ़ंक्शन को कॉल करने के लिए

<a data-bind="custom : { param1 : 'text', param2: 'text' }">delete</a> 

ko.bindingHandlers.custom = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     alert("init"); 
    }, 
    update: function (element, valueAccessor, allBindingsAccessor) { 
     alert("update"); 
    } 
} 

जब मैं पहले पृष्ठ दोनों init और update कार्यों बुलाया लोड। लेकिन जब मैं डिलीट लिंक पर क्लिक करता हूं update फ़ंक्शन कॉल नहीं होता है। जब भी मैं हटाए गए लिंक पर क्लिक करता हूं, मैं अपने कस्टम बाध्यकारी के अपडेट फ़ंक्शन को कॉल करना चाहता हूं। मैं यहाँ क्या गलत कर रहा हूँ?

उत्तर

5

अद्यतन फ़ंक्शन केवल प्रारंभ में ही कहा जाता है जब नॉकआउट बाइंडिंग लागू करता है और यदि कोई संदर्भित अवलोकन बदल जाता है।

आपका अपडेट फ़ंक्शन किसी भी अवलोकन को संदर्भित नहीं करता है और इसलिए प्रारंभिक कॉल से परे फिर से कॉल नहीं किया जाता है।

यदि आप उस पर क्लिक करते समय अपने फ़ंक्शन को कॉल करना चाहते हैं, तो आपको इसके बजाय click बाइंडिंग का उपयोग करना चाहिए।

+0

उत्तर के लिए धन्यवाद, लेकिन मैं कैसे अद्यतन समारोह कॉल करने के लिए बाध्यकारी क्लिक उपयोग करने के लिए इसे पाने के did'nt, यू एक छोटी उदाहरण –

+0

खैर यह क्या आप उन के साथ ऐसा करने में सक्षम होना चाहता हूँ पर निर्भर करेगा दे कृपया कर सकते हैं मापदंडों। आपके उदाहरण में काम करने के लिए बहुत कुछ नहीं है। क्या आपको कार्रवाई में उन मूल्यों की आवश्यकता थी? –

0

आपको 'हटाएं' के क्लिक पर एक फ़ंक्शन कॉल करना होगा, फिर उस फ़ंक्शन में फिर से बाइंडिंग लागू करें। आपकी समस्या हल हो जाएगी। क्योंकि जब आपके पास पहली बार लोड होता है तो आपके पास बाध्य मूल्य होता है, हटाए गए क्लिक पर नहीं।

<a data-bind="custom : { param1 : 'text', param2: 'text' }" 
    onclick='delete()'>delete</a> 

<script type=javascript> 
    function delete(){ ko.applyBindings(ko.bindingHandlers.custom);} 
</script> 
संबंधित मुद्दे