控制器中的Angular.js调用指令函数

安德烈斯

我想调用指令中定义的函数,与这个stackoverflow问题正好相反

我尝试了这个,但是没有用。

app.directive('myDirective', function() {
    return {
        link: function(scope, element, attrs) {
            scope.someDirectiveFn = function(arg) {
                 return "in directive";
            };
        },
    }
});

function MyCtrl($scope) {
    alert($scope.someDirectiveFn());
}

那可能吗?我怎么能得到它?这是不好的做法吗?

编辑

我这样子:

.controller('MyCtrl', function($scope) {
    alert($scope.func());
})

.directive('myDirective', function() {
    return {
      controller: function($scope, $element){
        $scope.func = function() {
          return "text";
         };
      }
    }
});
哈利卜

您可以使用事件系统来实现。

首先,使用参数在您的范围内发出自定义事件。其次,使用angular $ on方法监听指令中的作用域。

app.controller('MyCtrl', function($scope) {
  $scope.invokeDirectiveMethod = function() {
    $scope.$emit('invokeMyDirectiveMethod', 'myParameter');
  };
})

.directive('myDirective', function() {
  return {
    link: function(scope, element, attrs) {
      var someDirectiveFn = function(event, arg) {
        alert(arg + " in directive");
      };

      scope.$on('invokeMyDirectiveMethod', someDirectiveFn);
    },
  }
});

这是一个正在工作的朋克

更新

根据您的更新,事件通信不适合您的问题。

如何使用两种方式将对象传递给指令并在该对象中定义someDirectiveFn呢?这样,您可以传递参数并从中返回值。

app.controller('MyCtrl', function($scope) {
  $scope.shareObject = {};

  $scope.invokeDirectiveMethod = function() {
    if (angular.isFunction($scope.shareObject.someDirectiveFn)) {
      $scope.message = $scope.shareObject.someDirectiveFn('from controller'); 
    }
  };
})

.directive('myDirective', function() {
  return {
    scope: {
      'shareObject': '='
    },
    link: function(scope, element, attrs) {
      scope.shareObject.someDirectiveFn = function(arg) {
        return arg + ' from parameter';
      };
    },
  }
});

更新了插件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular ngController vs控制器在指令中构造

来自分类Dev

从嵌套指令中调用控制器中的函数

来自分类Dev

从angular中的指令调用父控制器的功能

来自分类Dev

在Angular中创建后立即调用控制器函数

来自分类Dev

在Angular指令中访问父控制器

来自分类Dev

angular js:从指令调用父控制器方法

来自分类Dev

在指令中调用控制器功能

来自分类Dev

Angular.js将函数从Controller传递到指令(或从指令调用控制器函数)-带参数

来自分类Dev

如何从页面中的jQuery调用Angular JS函数控制器

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

来自分类Dev

在Angular中,如何从控制器内部找到“调用”控制器的路由?

来自分类Dev

如何从外部控制器的指令中调用函数?

来自分类Dev

从指令中调用Angular控制器函数

来自分类Dev

如何使用Angular JS在控制器中定义函数

来自分类Dev

AngularJS:从我的指令中调用控制器函数

来自分类Dev

从控制器调用angularjs指令函数

来自分类Dev

Angular JS-在外部控制器中调用指令函数

来自分类Dev

Angular ngController vs控制器在指令中构造

来自分类Dev

在Angular中创建后立即调用控制器函数

来自分类Dev

渲染Angular指令后调用js函数

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

来自分类Dev

如何从控制器调用指令函数?

来自分类Dev

错误“控制器名称”不是angular js中的函数?

来自分类Dev

Angular指令调用父控制器函数

来自分类Dev

从控制器angularjs调用指令函数

来自分类Dev

angular JS控制器中的函数调用以随机顺序执行

来自分类Dev

angular:调用控制器函数中的重复项

来自分类Dev

从带有参数的指令中调用控制器函数

来自分类Dev

在控制器中模拟angular js服务调用

Related 相关文章

  1. 1

    Angular ngController vs控制器在指令中构造

  2. 2

    从嵌套指令中调用控制器中的函数

  3. 3

    从angular中的指令调用父控制器的功能

  4. 4

    在Angular中创建后立即调用控制器函数

  5. 5

    在Angular指令中访问父控制器

  6. 6

    angular js:从指令调用父控制器方法

  7. 7

    在指令中调用控制器功能

  8. 8

    Angular.js将函数从Controller传递到指令(或从指令调用控制器函数)-带参数

  9. 9

    如何从页面中的jQuery调用Angular JS函数控制器

  10. 10

    Angular JS:如何在Angular指令中从控制器的链接内部调用函数

  11. 11

    在Angular中,如何从控制器内部找到“调用”控制器的路由?

  12. 12

    如何从外部控制器的指令中调用函数?

  13. 13

    从指令中调用Angular控制器函数

  14. 14

    如何使用Angular JS在控制器中定义函数

  15. 15

    AngularJS:从我的指令中调用控制器函数

  16. 16

    从控制器调用angularjs指令函数

  17. 17

    Angular JS-在外部控制器中调用指令函数

  18. 18

    Angular ngController vs控制器在指令中构造

  19. 19

    在Angular中创建后立即调用控制器函数

  20. 20

    渲染Angular指令后调用js函数

  21. 21

    Angular JS:如何在Angular指令中从控制器的链接内部调用函数

  22. 22

    如何从控制器调用指令函数?

  23. 23

    错误“控制器名称”不是angular js中的函数?

  24. 24

    Angular指令调用父控制器函数

  25. 25

    从控制器angularjs调用指令函数

  26. 26

    angular JS控制器中的函数调用以随机顺序执行

  27. 27

    angular:调用控制器函数中的重复项

  28. 28

    从带有参数的指令中调用控制器函数

  29. 29

    在控制器中模拟angular js服务调用

热门标签

归档