如何从id为angularjs的运行块调用控制器函数

时间:2016-09-12 05:06:32

标签: javascript angularjs

我想从运行块调用控制器功能。

HTML

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

在我的跑步中,我试图调用控制器功能如下

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();
        });

但是,我得到了Uncaught TypeError: Cannot read property 'yourControllerMethod' of undefined

有人可以回答我失踪的地方吗?

2 个答案:

答案 0 :(得分:0)

你需要在ng-app属性中添加模块,控制器是myCtrl而不是你的控制器。

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

我也不确定应用程序在调用运行时是否已启动。

答案 1 :(得分:0)

为什么需要范围才能调用方法?我从普通的JavaScript代码做了类似的事情。但值得一提的是:我将ng-app链接到body,在ready事件上附加了一个处理程序,没有使用scope,而是直接使用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();
        }
      }
    }
  });