通过模块传递 angular 服务
passing angular services through modules
我正在查看 HotTowel-Angular 的代码,我正在尝试使用它制作一个小示例,但我无法让它工作。
这是我的代码:
var app = angular.module('myApp', ['common']);
var common = angular.module('common', []);
common.factory('commonf', ['$rootScope', '$timeout', commonFactory]);
function commonFactory($rootScope, $timeout){
var service = {
$rootScope: $rootScope,
$timeout: $timeout
}
return service;
}
app.controller('TestCtrl', ['commonf', testctrl]);
function testctrl(commonf) {
activate();
var $timeout = commonf.$timeout;
function activate() {
$timeout(function () {
alert("test");
}, 5);
}
}
我们的想法是将整个应用程序中使用的所有常见 angular 服务保留在注入到所有 services/controllers.
的服务中
当我尝试执行上述操作时,出现以下错误:
"$timeout is not a function";
编辑:Plunker
您在从 commonf 中提取依赖项之前调用了 activate()。更改为:
function testctrl(commonf) {
// define this first so that $timeout is defined when activate is executed
var $timeout = commonf.$timeout;
activate();
function activate() {
$timeout(function () {
alert("test");
}, 5);
}
在 javascript 中,将变量声明作为函数中的第一条语句通常是一种很好的做法。
我正在查看 HotTowel-Angular 的代码,我正在尝试使用它制作一个小示例,但我无法让它工作。
这是我的代码:
var app = angular.module('myApp', ['common']);
var common = angular.module('common', []);
common.factory('commonf', ['$rootScope', '$timeout', commonFactory]);
function commonFactory($rootScope, $timeout){
var service = {
$rootScope: $rootScope,
$timeout: $timeout
}
return service;
}
app.controller('TestCtrl', ['commonf', testctrl]);
function testctrl(commonf) {
activate();
var $timeout = commonf.$timeout;
function activate() {
$timeout(function () {
alert("test");
}, 5);
}
}
我们的想法是将整个应用程序中使用的所有常见 angular 服务保留在注入到所有 services/controllers.
的服务中当我尝试执行上述操作时,出现以下错误:
"$timeout is not a function";
编辑:Plunker
您在从 commonf 中提取依赖项之前调用了 activate()。更改为:
function testctrl(commonf) {
// define this first so that $timeout is defined when activate is executed
var $timeout = commonf.$timeout;
activate();
function activate() {
$timeout(function () {
alert("test");
}, 5);
}
在 javascript 中,将变量声明作为函数中的第一条语句通常是一种很好的做法。