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

时间:2014-04-14 13:59:34

标签: javascript angularjs

我对角度很新,我的指令与控制器之间存在范围问题。这是我的代码:

控制器:

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>

我收到此错误:未捕获的ReferenceError:未定义doSomething - 如何在指令中使用doSomething函数?

1 个答案:

答案 0 :(得分:3)

这一行:

doSomething();

应该是

scope.doSomething();

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