我有兩個選擇列表綁定到包含相同數據的不同排序的可觀察數組。這兩個選擇列表值綁定都是相同的observableArray。兩個選擇列表共享相同的值綁定,更新速度慢
HTML
<select id="countriesAZ" data-bind="value: selectedCountry, options: countriesAZ, optionsText: 'Name', optionsValue: 'Id', optionsCaption: 'Countries a - z'"></select>
<select id="countriesByDistance" data-bind="value: selectedCountry, options: countriesDist, optionsText: 'Name', optionsValue: 'Id', optionsCaption: 'Countries by distance'"></select>
JS
var myVM = function() {
var self = this;
this.countriesAZ = ko.observableArray([{"Id":1,"Name":"Scotland"},{"Id":2,"Name":"England"},{"Id":3,"Name":"Wales"},{"Id":4,"Name":"N. Ireland"}]);
this.countriesDist = ko.observableArray([{"Id":1,"Name":"Scotland"},{"Id":2,"Name":"England"},{"Id":3,"Name":"Wales"},{"Id":4,"Name":"N. Ireland"}]);
this.selectedCountry = ko.observableArray();
}
window.viewModel = new myVM();
ko.applyBindings(viewModel);
在this fiddle這一切似乎運作良好,並迅速作出反應,然而,實際的陣列有大約1000個項目,有一個延遲當改變其中一個選擇時。
我試圖把價值綁定,但似乎沒有區別。
您確定它是Knockout,這是此處的瓶頸嗎?它可能只是瀏覽器渲染它。你有沒有使用開發人員工具進行分析?就個人而言,無論如何,從可用性的角度來看,我強烈建議不要有1000個長的下拉菜單。 – 2013-03-01 12:11:53