如何在 Angular-js 指令中定义一个函数

本文介绍了如何在-js指令中定义一个函数,对大家解决问题有一定的参考价值。有需要的朋友,和小编一起学习吧!

问题描述

我创建了一个指令来使用引导程序的下拉元素选择用户。见下文。

app.directive('usersDropdown', function(ConfigService,$http) {返回 {templateUrl: 'app/views/users_dropdown.html',链接:函数($scope,元素,属性){});};});

.html

我需要创建一个函数,当单击列表中的用户时应该调用该函数。我的问题是如何在指令本身中定义这个函数?我把它写在控制器里。但问题是我有几个控制器。在所有控制器中编写相同的函数并不是一个好习惯。如果我可以编写一个对所有控制器都通用的函数,那就太好了,那就是指令内部。如果你有好的解决方案,请告诉我。

修改

我修改了我的指令的js如下

app.directive('usersDropdown', function(ConfigService,$http) {返回 {templateUrl: 'app/views/users_dropdown.html',链接:函数($scope,元素,属性){$scope.getUserDetails = function(user_id){控制台日志(用户 ID);}}};});

为此,我在控制台中将结果显示为 {{.}}。不是那个值。但是当我检查时,该函数正在传递预期值。

那为什么期望值没有进入函数呢?

已解决

我通过更改指令 html 模板解决了这个问题。我删除了 ‘ 和 {{ 如下所示。

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

解决方案

链接函数是一个js函数,你可以在其中做任何事情

app.directive('usersDropdown', function(ConfigService,$http) {返回 {范围 : {},templateUrl: 'app/views/users_dropdown.html',链接:函数($scope,元素,属性){$scope.somefunction = function(a) {//做一些事情}}};});

如果您不希望从指令外部访问此函数,您还应该使用隔离范围来执行此操作。

对于使用 ‘s drop-down 的用户。作为。

app.directive('usersDropdown', function(ConfigService,$http) {
    return {
        templateUrl: 'app/views/users_dropdown.html',
        link: function($scope, element, attrs) {
        });
    };

});

.html


我需要一个 ,它在列表中的用户上。我是怎么到这个的?我把它写在 .但我就是。全部都写一样的不好。如果我能写出 for all ,那就是js函数中定义函数js函数中定义函数,它会很好。如果你有好的,请告诉我。

我是我的 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);
            }
        }

    };
});

为此,我在 {{.}} 中。不是那个价值。但是当我是价值。

那为什么值不是那个呢?

我的问题是我的 html 。我 ‘ 和 {{ 从它作为 .

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

如果您希望这不是来自 .

,您也可以使用范围 to

关于如何在 -js 指令中定义函数的文章到此结束。希望我们推荐的答案对大家有所帮助,也希望大家支持IT之家!

© 版权声明
THE END
喜欢就支持一下吧
点赞144赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容