我想从运行块调用控制器功能。
HTML
<div class="yourcontroller component section" ng-app="" data-ng-controller="mainController" data-module="yourcontroller">
</div>
在我的跑步中,我试图像下面那样调用控制器功能
var result = document.getElementsByClassName("yourcontroller");
var scope = angular.element(result);
scope.yourControllerMethod();
我未定义yourControllerMethod
请不要将下面的答案推荐给我使用id而不是classname
var scope = angular.element(document.getElementById('yourcontainer')).scope();
scope.yourControllerMethod();
但我没有身份证,因为依赖而无法创建身份证明。无论如何使用 classname而不是id 从运行块调用控制器功能。
修改
angular.module('modulename', [])
.controller('mainController', ['$scope', '$window', function ($scope, $window ) {
$scope.yourControllerMethod = function(){
console.log("inside yourControllerMethod");
};
}])
.run(function($rootScope, $log, $window) {
// get the first element with class 'yourcontroller'.
var result = document.getElementsByClassName("yourcontroller")[0];
// create a angular element from this element.
var aElm = angular.element(result);
// get this element's scope;
var scope = aElm.scope();
// call scope function.
scope.yourControllerMethod();
});
答案 0 :(得分:1)
getElementsByClassName(...)
函数返回的元素集合不仅仅是一个元素。要从此集合中获取第一个元素,您可以使用[0]
,例如:getElementsByClassName(...)[0]
。
除此之外,您还必须调用角元素范围内的yourControllerMethod()
函数而不是元素本身。
// get the first element with class 'yourcontroller'.
var result = document.getElementsByClassName("yourcontroller")[0];
// create a angular element from this element.
var aElm = angular.element(result);
// get this element's scope;
var scope = aElm.scope();
// call scope function.
scope.yourControllerMethod();