Mam niestandardowe powiązanie do obsługi autouzupełniania, a gdy użytkownik wybierze element z autouzupełniania, mówię do serwera i zastępuję pole tekstowe skróconą nazwą. Problem polega na tym, że po raz drugi uruchamia funkcję "aktualizacji" mojego niestandardowego powiązania.Knockout.js - w jaki sposób przepustnicy niestandardowe wiązania
kodKnockout.js (edit: Uwaga Poniżej znajduje 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()
View
= f.text_field :name, "data-bind" => "value: name, ko_autocomplete: { source: '/autocomplete/tasks', select: name_select }"
Czy istnieje sposób, aby zastosować przepustnicę do zwyczaju wiążąca?
Po prostu chcę zatrzymać funkcję "aktualizacji" niestandardowych wiązań, po raz drugi, gdy ustawię nazwę zadania na krótką nazwę wysłaną z serwera.
. Ważne jest, aby dodać opcję disposeWhenNodeIsRemoved, aby umożliwić prawidłowe ułożenie nowego obliczonego powiązania, w przeciwnym razie wystąpią wycieki pamięci i pogorszenie wydajności lub pogorszenie. –