Javascript 如何在Angular js指令中定义函数

Javascript 如何在Angular js指令中定义函数,javascript,function,angularjs,angularjs-directive,Javascript,Function,Angularjs,Angularjs Directive,我创建了一个使用引导下拉元素选择用户的指令。具体如下 ng-click="getUserDetails(userList.SessionId)" Javascript app.directive('usersDropdown', function(ConfigService,$http) { return { templateUrl: 'app/views/users_dropdown.html', link: function($scope, elem

我创建了一个使用引导下拉元素选择用户的指令。具体如下

ng-click="getUserDetails(userList.SessionId)"
Javascript

app.directive('usersDropdown', function(ConfigService,$http) {
    return {
        templateUrl: 'app/views/users_dropdown.html',
        link: function($scope, element, attrs) {
        });
    };
});
users\u 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>
为此,我在控制台中得到的结果是
{{{userList.SessionId}
。这不是它的价值所在。但当我检查函数时,它正在传递期望值。

那么为什么期望值没有进入该函数的内部呢


解决了的 我很晚才改变了我的指示,解决了这个问题。我从中删除了
'
{{
,如下所示

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
            }
        }
     }; 
});

此外,如果您不想从指令外部访问此函数,则应使用隔离作用域来完成此操作。

谢谢您的回答。我将尝试创建一个服务。但是否可以在指令内部定义函数?不客气。正如您所建议的,您可以在指令控制内部定义指令的函数OLE函数。你可以在链接函数中这样做。它取决于实际的用例,你应该去做什么。一个带有私有或隔离作用域的指令应该与你的应用程序控制器的其余部分无关。如果你需要一个很大程度上依赖于你的应用程序的函数,那么就考虑一个架构。tural refactoringEdited,这只是为了更好的应用程序设计:D,所以函数可能不会冲突。感谢您的澄清。但是,如果将它们声明为单例且未绑定到作用域,它们是否会触发冲突?如果未绑定到作用域,您将无法从模板调用函数。我将代码修改为你提到了。但我有一个问题。请检查修改后的问题。如何从控制器函数调用
somefunction()函数
?可能吗?