2016-09-12 2 views
0

실행 블록에서 컨트롤러 기능을 호출하려고합니다.angularjs에서 id가있는 실행 블록에서 컨트롤러 기능을 호출하는 방법

HTML은

<div id="yourcontroller" ng-app="" data-ng-controller="mainController" data-module="yourcontroller"> 
</div> 

그리고

내 실행 안에 내가 Uncaught TypeError: Cannot read property 'yourControllerMethod' of undefined

누군가가 답변을 할 수지고있어, 아래

angular.module('modulename', []) 

    .controller('myCtrl', ['$scope', '$window', function ($scope, $window) { 

    $scope.yourControllerMethod = function(){ 
      console.log("inside yourControllerMethod"); 
     }; 

    }]) 

    .run(function($rootScope, $log, $window) { 
      var scope = angular.element(document.getElementById('yourcontroller')).scope(); 
      scope.yourControllerMethod(); 
     }); 

같은 컨트롤러 함수를 호출하려고하지만거야 어디 실종 됐어?

답변

0

ng-app 속성에 모듈을 추가해야하며 컨트롤러는 컨트롤러가 아닌 myCtrl입니다.

<div id="myCtrl" ng-app="modulename" data-ng-controller="myCtrl" data-module="yourcontroller"> 
</div> 

실행이 호출 될 때까지 응용 프로그램이 부트 스트래핑되었는지 여부는 확실하지 않습니다.

0

왜 메서드를 호출하려면 범위가 필요합니까? 나는 일반 JavaScript 코드와 비슷한 것을했다. 언급 할 사항 : ng-app를 본문에 연결하고 준비 이벤트에 핸들러를 연결하고 범위를 사용하지 않았지만 controller()가 직접 작동합니다. 희망이 있으시면

angular.element(document).ready(function() { 
    var input = document.getElementById('myInputId'); 
    input.onkeypress = function (event) { 
     if (event) { 
     if (event.keyCode === 13) { 
      angular.element(document.body).controller().aMethodFromTheController(); 
     } 
     } 
    } 
    }); 
관련 문제