我正在使用淘汰赛,我想用observableArray值创建自动完成文本框字段。
我可以绑定自动完成并在页面准备好后过滤值,但是当我添加更多或更改observableArray源的值时,它根本不会更改该自动完成字段上的源值。我仍然在UI上看到observableArray的旧值,但如果我记录检查它,它会向我显示新值。
我想知道如何让自动完成字段的来源获取observableArray的新值?
if @kind == 'location'
@locations = if data.config?.locations?
$.map data.config.locations, (x) => new Location x
else
[]
@resultLocations = ko.observableArray []
@resultLocationsUI = ko.observableArray(@locations[0..5])
@offset = 0
@maximumSearchLength = data.config?.maximumSearchLength
%input.autocomplete-location-input.ux-search.w25{ ko(autocomplete: :value, value: :value,update: "resultLocationsUI()", source: "resultLocationsUI()", valueUpdate: 'afterkeydown', css: { error: :error }, attr: {id: "'location-input-' + code"}), type: :text }
%button{ko(click: :loadMoreLocations)} load more
loadMoreLocations: =>
startIndex = (@offset * 5)+1
endIndex = startIndex + 5
@offset = @offset + 1
@resultLocationsUI(@resultLocations())
答案 0 :(得分:0)
当数组本身发生更改时,可观察数组仅更新 ,例如当该数组中的对象上的属性发生更改时。它只是不关心数组成员内部的变化,只要整个成员(以及数组)发生变化。
可观察数组在添加或删除元素时通知更改。它们不会通知对作为数组元素的对象属性的更改。如果您希望发生,则必须使元素对象属性可观察。