我有一个自定义绑定来处理自动完成,当用户从自动完成中选择一个项目时,我与服务器交谈并用缩短的名称替换 text_field。问题是这会再次触发我的自定义绑定的“更新”功能。
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 设置为从服务器发回的 short_name 时,我只想阻止自定义绑定“更新”功能再次触发。