[英]How to define a function inside Angular-js Directive
我創建了一個使用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)"
鏈接指令功能是一個js函數,您可以在其中執行任何操作
app.directive('usersDropdown', function(ConfigService,$http) {
return {
scope : {},
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
$scope.somefunction = function(a) {
// Do some stuff
}
}
};
});
如果您希望此函數不能從指令外部訪問,您還應該使用隔離范圍來完成。
如果您發現自己需要在應用程序的各個位置使用函數或數據變量,那么將某些邏輯移動到服務中可能是一個很好的解決方案。
例如,您可以創建一個user service
,該user service
應該提供對用戶相關信息和方法的應用程序范圍的訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.