Saj*_*ith 13 javascript function angularjs angularjs-directive
我创建了一个使用bootstrap的下拉元素选择用户的指令.如下.
使用Javascript
app.directive('usersDropdown', function(ConfigService,$http) {
return {
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
});
};
});
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我需要创建一个函数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);
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
为此,我在控制台中获得结果{{userList.SessionId}}.不是那个价值.但是当我检查函数传递期望值时.

那么为什么期望值没有进入该函数?
我通过更改我的指令html tamplate解决了这个问题.我删除',并{{从中如下.
ng-click="getUserDetails(userList.SessionId)"
Run Code Online (Sandbox Code Playgroud)
ica*_*der 23
链接指令功能是一个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
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
如果您希望此函数不能从指令外部访问,您还应该使用隔离范围来完成.
| 归档时间: |
|
| 查看次数: |
32935 次 |
| 最近记录: |