繁体   English   中英

如何从angularjs中具有ID的运行块中调用控制器函数

[英]how to call controller function from run block with id in 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

有人可以回答我想念的地方吗?

您需要在ng-app属性中添加模块,并且控制器是myCtrl而不是yourcontroller。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM