Não consigo chamar uma função com ng-click (AngularJS)

03/11/2015

0

Pessoal, estou aprendendo AngularJS e tenho um problema que não consigo solucionar.

Tenho uma função dentro de um controller que está dentro de um módulo.
Essa função é responsável por montar um elemento accordion com vários itens:

$scope.montaAccordion = function(dados){
            var elemento = "";
            for(var i=0; i < dados.length; i++){
                elemento += "<div class='accordion-group' indice='collapse"+dados[i].AtributoVariacao.id+"'>";
                elemento += 	"<div class='accordion-heading'>";
                elemento +=			"<a class='accordion-toggle' data-toggle='collapse' data-parent='#sidebar-accordion' href='#collapse"+dados[i].AtributoVariacao.id+"'>";
                elemento +=				"<i class='icon-reorder'></i>"+dados[i].Variacao.variacao+":: "+dados[i].AtributoVariacao.atributo;
                elemento +=			"</a>";
                elemento +=		"</div>";
                elemento +=		"<a href='#' class='bt-del-atributo' style='float:right; margin: -33px 7px 0 0;'>";
                elemento +=			"<i class='fa fa-times fa-2x'></i>";
                elemento += 	"</a>";
                elemento +=		"<div id='collapse"+dados[i].AtributoVariacao.id+"' class='accordion-body collapse'>";
                elemento +=			"<div class='accordion-inner'>";
                elemento +=				"<div class='control-group' data-fieldname='preco-diferenciado' style='padding:0;'>";
                elemento +=					"<div class='controls'>";
                elemento +=					    "<label class='control-label'>Esta variação possui um preço diferenciado?</label>";
                elemento +=						"<input type='text' name='preco-diferenciado-"+dados[i].AtributoVariacao.id+"' class='span12' value='' placeholder=''>";
                elemento +=					"</div><br />";
                elemento +=					"<button type='button' class='btn btn-info' ng-click='salvaPrecoDiferenciado("+dados[i].AtributoVariacao.id+")'>Salvar</button>";
                elemento +=				"</div>";
                elemento +=			"</div>";
                elemento +=		"</div>";
                elemento +="</div>";
            }
            $('#sidebar-accordion').html(elemento);
        }


Mas no trecho:

elemento += "<button type='button' class='btn btn-info' ng-click='salvaPrecoDiferenciado("+dados[i].AtributoVariacao.id+")'>Salvar</button>";


O ng-click não funciona. Acredito que seja algum problema no escopo, ou onde insiro essa função salvaPrecoDiferenciado().

Declarei a função no mesmo controller:

$scope.salvaPrecoDiferenciado = function(id){
alert(id);
}[/code]

e não funcionou. Alguém pode me ajudar?
Michel Martins

Michel Martins

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar