Что я хочу сделать, это натолкнуть объект на массив, привязанный к html, привязанный к angularjs, а затем сделать функцию щелчка на новом созданном элементе. код как этот
$scope.fruits = {"orange", "plum", "cherry"};
$scope.add = function() {
$scope.fruits.push("apple");
//this would add an element to the html, then I want to click on the element
$('#fruits').children.eq(-1).click();//click the last element (which has just been created)
}
HTML, это как:
<div id="fruits">
<div ng-repeat="fruit in fruits"></div>
</div>
Проблема заключается в том, когда объект помещается в модель, угловатый бы сделать что-то вроде $ объема $ применяются(). для динамического обновления html. Если я нажимаю последний элемент с .children(). Eq (-1) .click(), он не будет ждать после создания нового элемента, то, что он на самом деле нажимает, является div «cherry». .
Я пытался позвонить $ объем $ применяется() до щелчка(), она работает, но я получил сообщение об ошибке:
$apply already in progress
, который я считаю, это не очень хорошая практика, и $ применять () не следует вызывать таким образом.
Не могли бы вы подробнее рассказать о том, что делает действие click? Я думаю, что было бы лучше искать альтернативный способ достижения конечной цели, не используя click(). –
Право. У меня есть аккордеон (бутстрап) и кнопка, чтобы добавить новую панель на аккордеон. Я хочу, чтобы открыть новую панель и закрыть другие, когда вы нажимаете кнопку «Создать». –
Возможно, это не совсем то, что вы ищете, но вот пример, который будет расширять последнюю панель в гармонике при повторной визуализации (например, когда вы добавляете новую панель в конец). http://plnkr.co/edit/fSevqkgzQ9WB7fqerdja?p=info Если у вас есть дополнительная информация о ваших требованиях (например, какая панель будет первоначально расширена, новые панели всегда будут добавлены до конца), тогда, возможно, я смогу помочь с более конкретное решение. –