Como definir uma função dentro da diretiva Angular-js
Eu criei uma diretiva para selecionar usuários usando o elemento drop-down do bootstrap. do seguinte modo.
Javascript
app.directive('usersDropdown', function(ConfigService,$http) {
return {
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
});
};
});
users_dropdown.html
<div class="btn-group pull-right" >
<a class="btn dropdown-toggle" data-toggle="dropdown" href="">
Select User
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right align-left" role="menu" aria-labelledby="dropdownMenu">
<li ng-repeat = "userList in userLists"><a ng-click="getUserDetails('{{userList.SessionId}}')" style="cursor:pointer">{{userList.UserPartyName}}</a></li>
<li ng-hide="userLists" style="cursor:pointer"><a>No Users</a></li>
</ul>
</div>
Eu preciso criar uma funçãogetUserDetails
, que deve ser chamado ao clicar em um usuário da lista. Minha pergunta é como definir essa função dentro da própria diretiva? Eu escrevi no controlador. Mas o problema é que estou tendo vários controladores. Não é uma boa prática escrever a mesma função em todos os controladores. Se eu puder escrever a função comum para todo o controlador, que está dentro da diretiva, será bom. Se você tiver uma boa solução, me avise.
Eu modifiquei o js da minha diretiva da seguinte forma
app.directive('usersDropdown', function(ConfigService,$http) {
return {
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
$scope.getUserDetails = function(user_id){
console.log(user_id);
}
}
};
});
Para isso eu estou recebendo o resultado no console como{{userList.SessionId}}
. Não o valor para isso. Mas quando eu inspecionei a função está passando valor esperado.
Então, por que o valor esperado não está ficando dentro dessa função?
ResolvidoEu resolvi o problema, alterando minhas diretivas html tamplate. Eu removi'
e{{
dele como segue.
ng-click="getUserDetails(userList.SessionId)"