Tôi có một ràng buộc tùy chỉnh để xử lý tự động hoàn tất và khi người dùng chọn một mục từ tự động hoàn thành, tôi nói chuyện với máy chủ và thay thế text_field bằng tên rút gọn. Vấn đề là điều này kích hoạt chức năng 'cập nhật' của liên kết tùy chỉnh của tôi lần thứ hai.Knockout.js - làm cách nào để điều chỉnh các ràng buộc tùy chỉnh
Knockout.js mã (chỉnh sửa: Lưu ý những điều sau đây được 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()
Xem
= f.text_field :name, "data-bind" => "value: name, ko_autocomplete: { source: '/autocomplete/tasks', select: name_select }"
Có cách nào để áp dụng một van tiết lưu để một ràng buộc tùy chỉnh?
Tôi chỉ muốn dừng chức năng cập nhật liên kết 'tùy chỉnh' từ kích hoạt lần thứ hai khi tôi đặt task.name thành short_name được gửi lại từ máy chủ.
điều quan trọng là bạn thêm tùy chọn disposeWhenNodeIsRemoved để cho phép ràng buộc tính toán mới được xử lý đúng cách, nếu không bạn sẽ bị rò rỉ bộ nhớ và hiệu suất giảm hoặc tệ hơn. –