在下面的代码中,我创建了一个包含服务和控制器的模块。该服务包含我在控制器内共享和调用的单一方法。下面这段代码代表工作实现:AngularJS:在控制器方法内引发事件以调用服务方法
!(function() {
'use strict';
var app = angular.module('app', []);
app.service('rootService', function() {
this.exampleFunction = function() {
alert('this is running from the service');
};
});
app.controller('MainCtrl', ['$scope', 'rootService',
function($scope, rootService) {
rootService.exampleFunction();
}]);
})();
这是我的问题:
我想调用只有当事件被触发控制器中的方法。当我为点击事件添加一个侦听器并且触发一个调用相同方法的函数时,错误控制台将返回:“Uncaught TypeError:undefined不是函数。”
这里是我试图代码:
!(function() {
'use strict';
var app = angular.module('app', []);
app.service('rootService', function() {
this.exampleFunction = function() {
alert('this is running from the service');
};
});
app.controller('MainCtrl', ['$scope', 'rootService',
function($scope, rootService) {
var button = document.getElementByTag(button);
button.addEventListener('click', function(rootService) {
rootService.exampleFunction();
});
}
]);
})();
为什么不这项工作?这两种实现之间有什么很大的变化?
谢谢你的回应。我实际在我的应用程序中侦听的事件是窗口大小调整。我会使用一个指令吗,就像@Josh Beam建议的那样? – shmuli 2015-02-23 04:09:36
@shmuli是的,在这种情况下,指令可能更合适。谷歌搜索窗口调整大小指令会给你一些快速的例子。 – Bert 2015-02-23 04:12:34
为什么这与在调用** local **方法的控制器中编写事件侦听器有所不同?这工作没有问题......只有当我尝试从控制器中的**服务**调用方法时,我遇到了问题,我无法使用事件侦听器执行此操作。 – shmuli 2015-02-23 04:43:28