我对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-如何在指令中使用doSomething函数?

最佳答案

这行:

doSomething();


应该

scope.doSomething();


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

关于javascript - Controller +指令中的 Angular 范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23062145/

10-17 02:51