Boa noite, tudo bem?
Estou adicionando elementos dinamicamente em minha aplicação e me deparei com um problema ao qual não consigo resolver.
O problema é o seguinte:
- O usuário seleciona a "Condição de Pagamento" para uma determinada venda e, de acordo com a opção selecionada, eu adiciono 1 ou mais parcelas na tela.
Até aqui tudo bem. Os elementos já estão aparecendo na tela conforme necessário. O problema é que, entre os elementos, tenho um específico, que é uma diretiva pronta, importada para uso dentro da aplicação. Essa diretiva requer alguns métodos de apoio dentro do controller
para que possa funcionar corretamente. O problema é que, para cada diretiva nova (uib-datepicker), eu preciso também adicionar os métodos que darão apoio ao seu funcionamento.
Acho que ficou claro. Peço que me ajudem!
Abaixo segue um exemplo do código para adicionar novos elementos:
function addParcela() {
var novaParcela = `<div class="row">
<div class="form-group col-md-3" style="padding-bottom: 0; margin-bottom: 0;">
<label for="data-vencimento">Data de vencimento</label>
<p class="input-group">
<input type="text" class="form-control" id="data-vencimento" uib-datepicker-popup="dd/MM/yyyy" is-open="vm.popup.opened"
show-button-bar="false" ui-mask="99/99/9999" datepicker-options="vm.opcoes" ng-model="vm.novaParcela.data"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="vm.open()"><i class="fa fa-calendar"></i></button>
</span>
</p>
</div>
<div class="form-group col-md-6">
<label for="obs-parcela">Observações da parcela</label>
<input type="text" class="form-control" id="obs-parcela"/>
</div>
</div>`;
$('#parcelas').prepend($compile(novaParcela)($scope));
}
Esse é um método de apoio que a diretiva precisa, por exemplo:
function open() {
vm.popup.opened = true;
}