簡體   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