2012-06-30 41 views
0

我想要讓jquery ui selectmenu插件與knockout.js一起玩,包括添加選項和更新。我有下面的工作代碼,但性能不是那麼好。有更好的選擇嗎?我正在進行超時的原因是因爲數組有時並未綁定到select,而selectmenu是空的。jquery UI選擇菜單和knockout.js性能

https://github.com/fnagel/jquery-ui/wiki/Selectmenu

ko.bindingHandlers.dropdownlist = { 
     update: function (element, valueAccessor, allBindingsAccessor) { 

      var values = ko.utils.unwrapObservable(valueAccessor()); 
      var allBindings = allBindingsAccessor(); 

       if (allBindings.options) { 
        setTimeout(function() { 
         $(element).selectmenu("destroy").selectmenu(values || {}); 
        }, 0); 
       } else { 
        $(element).selectmenu(values || {}); 
       } 
     } 
    }; 

回答

0

如果你把「下拉列表」後的「選項」的結合,例如結合你不需要超時options: speeds, value: selectedSpeed, dropdownlist: {style: 'popup'}。此外,根據您發佈的selectmenu鏈接,每次選項更改時都不需要調用「銷燬」方法。

正如我在最近關於性能的另一個問題中評論過的,請看this blog post

以下是使用selectmenu結合(我修改)一個小提琴,表明操縱底層observableArray的2種方式,並且它們的性能:jsfiddle