如何在AngularJs指令中使用控制器?

时间:2016-03-14 17:20:54

标签: javascript angularjs

我有一个控制器,我想在我的指令中使用,如何使用控制器指令我想要访问指令中的所有控制器功能?

directive.js

angular.module('App').directive('deleteButtons', function (prcDeleteFactory,$rootScope) {
  'use strict';
  return{
    restrict:'E',
    scope:{
    id: '=ids',
    name: '@'
    },
    templateUrl:'scripts/common/prcDeleteDirective.html',
   link:function(scope){
     scope.deleteButton = function(){
       if(scope.name === 'process') {
         prcDeleteFactory.deleteObj(scope.name,scope.id);
         $rootScope.$broadcast('event');
       } else if(scope.name === 'risk') {
         prcDeleteFactory.deleteObj(scope.name,scope.id);
       } else if(scope.name === 'control'){
         prcDeleteFactory.deleteObj(scope.name,scope.id);
       }
     }
   }     
  }

});

Ctrl.js

angular.module('App').controller('ProcessCtrl', function($scope) {
                    'use strict';
                    $scope.confirmationWin = function(){
                    console.log('Print value');
                    };
                    });

2 个答案:

答案 0 :(得分:1)

您可以使用匿名函数定义控制器,也可以传递在同一模块上注册的现有控制器函数的字符串,如下所示。

return {
      restrict:'E',
      controller : 'ProcessCtrl'
  };

当您使用isolated scope作为指令时,要访问控制器属性和方法,您必须明确定义controller

如果您不想使用隔离范围,可以从指定定义对象中删除您要返回的scope属性。默认值为{{1}这意味着您的指令将与封闭容器的控制器共享相同的范围。您可以设置false,这意味着您的指令将获得一个新范围,该范围原型继承封闭控制器中的所有方法和属性。

有关指令范围的更多详细信息,请参阅此link

答案 1 :(得分:0)

在你的指令中你可以使用

Scanner s = new Scanner(System.in);
        String c = s.next();
        System.out.print(c.length());

然后使用vm.confirmationWin访问指令模板中的控制器属性,例如