我有一個自定義綁定來處理自動完成,並且當用戶從自動完成中選擇一個項目時,我會與服務器交談並用縮寫名稱替換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 }"
是否有節氣門適用於自定義綁定的方法嗎?
我只想停止自定義綁定的'更新'功能,當我將task.name設置爲從服務器發送回來的短名稱時再次觸發。
添加disposeWhenNodeIsRemoved選項以允許正確處理新的計算綁定至關重要,否則會導致內存泄漏並降低性能或更糟糕。 –