我想从运行块调用控制器功能。
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
有人可以回答我失踪的地方吗?
答案 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();
}
}
}
});