控制器+指令中的角度范围

angular scope in controllers + directives

本文关键字:范围 指令 控制器      更新时间:2023-09-26

我对angular很陌生,指令和控制器之间的范围有问题。这是我的代码:

控制器:

var myApp = angular.module('myApp', []);
    myApp.controller('testCtrl', function ($scope, $http) {
    $scope.doSomething = function() {
       alert("Testing Scope");
   };
});

指令:

myApp.directive('keyEvents', function($document) {
        return {
            restrict: 'A',
            link: function(scope, element, attrs) {
                $document.on('keypress', function(e) {
                 switch (e.keyCode) {
                    case (49):
                            doSomething();
                            break    
                    default:
                    } 
                }); 
            } 
          }; 
        }); 

HTML:

     <script src= "js/main.js"></script>
     <script src = "js/keyevents.js"></script>
     <body ng-app ="myApp">
        <div ng-controller="testCtrl">
               <div key-events>
               </div>
        </div>  
    </body>

我收到以下错误:Uncaught ReferenceError:doSomething未定义-如何在指令中使用doSometh函数?

此行:

doSomething();

应该是

scope.doSomething();

因为当您从控制器在作用域中定义方法,并且此作用域在指令中继承时,您只能通过作为参数传递的scope来访问它。