У меня есть большая Угловая страница со 100 + строками данных, каждая с кнопкой в последнем столбце, которая устанавливает радиомодель Bootstrap, на основе которой вы нажимаете кнопку.Пакет триггеров Угловой бутстрап нажмите кнопку события
//....
<tr>
<td>
data1
</td>
<td>
data2
</td>
<td>
<div ng-controller="pickSource" class="btn-group " role="group" aria-label="...">
<label class="btn btn-info btn-xs pickSourceButton takeXxxBtn"
ng-model="radioModel"
btn-radio="'yyy'" >
Approve
</label>
<label class="btn btn-warning btn-xs pickSourceButton takeYyyBtn"
ng-model="radioModel"
btn-radio="'yyy'" >
Reject
</label>
<label class="btn btn-danger btn-xs pickSourceButton noActionBtn"
ng-model="radioModel"
btn-radio="'noAction'" >
Hold
</label>
</div>
</td>
</tr>
//... many of these, the picksource block is actually a directive but i simpified here
Кнопка выглядит так: (утверждение | отклонять | удерживайте)
контроллер для этой кнопки, как это:
controller('pickSource', function ($scope, $log) {
$scope.radioModel = "noAction";
$scope.$watch('radioModel', function(newValue, oldValue) {
if (newValue !== oldValue) {
$log.log('emitting event');
//even if i remove this below it is slow
$scope.$emit('pickSourceButtonDidChange',someDATA);
}
});
});
У меня есть кнопка работы партии, которая будет выбирать одинаковое значение (т. е. выбрать источник для всех строк) для каждой строки.
В настоящее время я запуская события так:
//inside bootstrap dropdown
if(source == "xxx"){
el = document.getElementsByClassName('takexxxBtn');
}
else if (source == "yyy"){
el = document.getElementsByClassName('takeyyyBtn');
}
else{
el = document.getElementsByClassName('noActionBtn');
}
$timeout(function() {
angular.element(el).triggerHandler('click');
}, 0);
Однако, я получаю очень плохую производительность от этого. Я предполагаю, что это связано с тем, что в событиях кликов есть довольно дорогая серия действий (я даже вынул весь код, который запускается при нажатии кнопки и по-прежнему получает тот же рейтинг производительности), но мне интересно, есть ли какая-либо альтернатива , Я не могу просто изменить базовые данные, которые запускает триггер, потому что мне также нужен интерфейс для изменения (нужна кнопка, чтобы она выглядела так, как будто она нажата и т. Д.)
Есть ли способ сделать это?
Не могли бы вы назвать функцию, с которой событие щелчка переводилось в угловое снова и снова? Вставьте режим вашего кода dom. –
Отредактировано, чтобы добавить больше контекста к вопросу. Кроме того, то, что вы упомянули, это именно то, что я делаю ... но это очень медленно – maschwenk
Нет, вы не делаете то, что я описываю, вы на самом деле запускаете кучу событий щелчка. То, что вы должны делать, это обновление всех моделей. –