Я создал директиву для выбора пользователей с помощью раскрывающегося элемента bootstrap. следующим образом.
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>
Мне нужно создать функцию getUserDetails
, которая должна вызываться при нажатии на пользователя из списка. Мой вопрос - как определить эту функцию внутри самой директивы? Я написал это в контроллере. Но проблема в том, что у меня есть несколько контроллеров. Это не очень хорошая практика, чтобы написать одну и ту же функцию во всех контроллерах. Если я могу написать функцию, общую для всех контроллеров, то есть внутри директивы, это будет хорошо. Если у вас есть хорошее решение, сообщите мне об этом.
Модификация
Я изменил свою директиву js следующим образом
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);
}
}
};
});
Для этого я получаю результат в консоли как {{userList.SessionId}}
. Не значение для этого. Но когда я проверял, функция пропускает ожидаемое значение.
Тогда почему ожидаемое значение не попадает внутрь этой функции?
решаемые
Я решил проблему, изменив мою директиву html tamplate. Я удалил из него '
и {{
следующим образом.
ng-click="getUserDetails(userList.SessionId)"