2014-09-22 4 views
0

Я есть выбор управления HTML вроде следующего:Выберите меню отображения несколько раз

<select name="width-dimension-inches" id="width-dimension-inches" data-bind="value: widthWhole,jqmSelectMenuRefresh :true, options: widthDimension.dimension.getDimensionsWhole()"> 

</select> 

Я создал пользовательский нокаута связывание с именем jqmSelectMenuRefresh, потому что всякий раз, когда я выбрал опцию из списка выбора, я не был в состоянии видеть его в списке выбора. Реализация для jqmSelectMenuRefresh показано ниже:

define(["jquery", "knockout", "jqueryMobile"], function ($, ko) { 
    ko.bindingHandlers.jqmSelectMenuRefresh = { 

     init: function(element) { 

      $(element).selectmenu().selectmenu('refresh', true); 

     }, 

Когда я запускаю выше код, который я в конечном итоге с двумя selectmenus, как показано ниже:

enter image description here

Что я могу сделать, чтобы решить эту проблему?

UPDATE 1:

Если я обновляю код на следующее:

init: function(element) { 

      $(element).selectmenu('refresh',true); 

тогда я получаю следующее сообщение об ошибке:

Uncaught Error: cannot call methods on selectmenu prior to initialization; attempted to call method 'refresh' 

ответ

1

Каждый раз, когда вы вызываете selectmenu() функцию создается новый экземпляр.

$(element).selectmenu().selectmenu('refresh', true); 

В приведенной выше строке кода создаются два экземпляра, которые заканчиваются двумя видимыми элементами.

Мое предложение заключается в инициализации плагина, хранить экземпляр в переменной, а затем вызвать функцию на этом объекте:

var $instance = $(element).selectmenu(); 
$instance.selectmenu('refresh', true); 
+0

Я попробовал ваш код, и он по-прежнему создает два выберите списки, поскольку вы также назвав его дважды. –

Смежные вопросы