मैं एक कस्टम स्वत: पूर्ण को संभालने के लिए बाध्यकारी है थ्रोटल करते हैं, और मैं सर्वर से बात करते हैं और संक्षिप्त नाम के साथ text_field की जगह जब कोई उपयोगकर्ता स्वत: पूर्ण से किसी आइटम का चयन करता है। समस्या यह है कि यह दूसरी बार मेरे कस्टम बाध्यकारी के 'अद्यतन' समारोह को ट्रिगर करता है।Knockout.js - कैसे मैं कस्टम बाइंडिंग
Knockout.js कोड (संपादित करें: नोट पीछा कर रहा है CoffeeScript):
ko.bindingHandlers.ko_autocomplete =
init: (element, params) ->
$(element).autocomplete(params())
update: (element, valueAccessor, allBindingsAccessor, viewModel) ->
unless task.name() == undefined
$.ajax "/tasks/name",
data: "name=" + task.name(),
success: (data,textStatus, jqXHR) ->
task.name(data.short_name)
Task = ->
@name = ko.observable()
@name_select = (event, ui) ->
task.name(ui.item.name)
false
task = Task.new()
देखें
= f.text_field :name, "data-bind" => "value: name, ko_autocomplete: { source: '/autocomplete/tasks', select: name_select }"
वहाँ एक कस्टम बाइंडिंग के लिए एक थ्रोटल लागू करने के लिए कोई तरीका है?
मैं सिर्फ कस्टम बाइंडिंग 'अपडेट' समारोह को दूसरी बार जब मैं सर्वर से वापस भेज दिया short_name को task.name सेट पर आरंभ होने से रोकना चाहते हैं।
यह महत्वपूर्ण है कि आप नए गणना बाध्यकारी ठीक से निपटारा करने के लिए अनुमति देने के लिए disposeWhenNodeIsRemoved विकल्प जोड़ने है हो जाएगा, अन्यथा आप मेमोरी लीक और अपमानजनक प्रदर्शन या बुरा है। –