javascript - 如何在angularjs中以编程方式调用自定义指令

标签 javascript angularjs angularjs-directive

有没有办法从 Controller 内部的函数调用自定义指令函数。

var m=angular.module('myApp',[]).controller('test',function($scope){
//here i want to call input directive

});

m.directive('input', function() {});

最佳答案

要调用指令函数,您需要使用事件调度:

var m=angular.module('myApp',[]).controller('test',function($rootScope){
  $rootScope.$emit('event-response', result);
  ...
});

m.directive('input', function($rootScope) {
  ...
  $rootScope.$on('event-response', function (args) {
    //function call...
  });
 .....
});

更新

我们可以使用共享作用域将函数从指令添加到父 Controller 。 它不太可能从父 Controller 范围继承,因为这种方式会产生非常强的耦合,并且您需要记住在重用此指令时您是从父 Controller 继承的。

var m=angular.module('myApp',[]).controller('test',function($scope){
  $scope.myFunc() // available from `input` directive
  ...
});

m.directive('input', function() {
  return {
    scope: false, // scope is shared with parent controller
    controller: function($scope) {
      $scope.myFunc = function() {
        ...
      };
    }
  };
});

关于javascript - 如何在angularjs中以编程方式调用自定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754852/

相关文章:

javascript - 使用 Javascript 或 AngularJS 控制或禁用浏览器后退按钮

javascript - 输入事件监听器(onkeypress、onkeydown)在 Android 数字键盘中不起作用

angularjs - 是否可以通过从某个索引开始循环并在另一个索引处结束来限制显示结果的数量 "ng-repeat"

javascript - 指令和 Controller 之间的通信,中间有中间范围

angularjs - Angular 指令定义中的 `name`?

javascript - 如何在javascript中转换json数据

Javascript:向上滚动并到达顶部时导航栏消失

javascript - 使用 angular.js 中的输入从指令调用 Controller

javascript - 时间到期后重启 FlipClock

javascript - 这段 JavaScript 代码有什么问题?返回错误