Используя набор кнопок jQuery UI в angularjs

Постановказадачи: показать набор кнопок JQ для каждого элемента в массиве контроллера.

Так что-то вроде этого было бы логично:

<div ng-repeat='a in algos' mybuttonset>
   <input name='X' id='A'><label for='A'>
</div>

Но... В JQ buttonset, если id пар ввода / метки не уникален, каждый раз, когда директива вызывает buttonset(), размер кнопки увеличивается. например. Если у вас есть 20 элементов в "algos", кнопки огромны.

Так как сделать идентификатор уникальным? Я думал, что {{$index}} внутри ng-repeat будет работать:

<div ng-repeat='a in algos' mybuttonset>
   <input name='X' id='A{{$index}}'><label for='A{{$index}}'>
</div>

Но в этом случае angular сообщает об ошибке синтаксиса:

Syntax error, unrecognized expression: [for=A{{$index}}] <div ng-repeat="a in algos" dwbuttonset="" class="ng-scope ui-buttonset">

Очень простой пример, демонстрирующий суть трех случаев (нормальный размер, растущие кнопки и синтаксическая ошибка), находится на этом Plunker.

Вся помощь и комментарии приветствуются.

Дэнни

1 ответ

Кажется, что значения атрибутов for и id не устанавливаются при вызове плагина jquery.

Измените это на:

.directive('dwbuttonset', function() {
    return function(scope, elm, attrs) {
    setTimeout(function() {
      (elm).buttonset(); 
    },0);
    };
});

Таким образом, вы вызываете плагин после фазы $digest элементов dom.

Другие вопросы по тегам