【发布时间】:2014-11-27 11:46:02
【问题描述】:
我有一个像这样的角度模块/工厂:
var app = angular.module('webportal', ['vr.directives.slider', 'angular-flexslider', 'LocalStorageModule', 'multi-select']);
app.factory('portal', ['uri', function (uri) {
portal = {};
portal.getURLParameter = function (name) {
var hash;
var vars = [];
var indexOfQuestion = window.location.href.indexOf('?');
if (indexOfQuestion != -1) {
var hashes = window.location.href.slice(indexOfQuestion + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
if (typeof name == 'undefined')
vars.push(hashes[i]);
else {
hash = hashes[i].split('=');
if (hash[0] = name)
return hash[1];
}
}
}
};
return portal;
}]);
现在我正在尝试从外部角度调用getURLParameter,如下所示:
angular.injector(['webportal']).get('portal').getURLParameter('blah');
当然这不起作用并且失败:
错误:[$injector:modulerr] 由于无法实例化模块 webportal to: [$injector:modulerr] 无法实例化模块 vr.directives.slider 由于:[$injector:modulerr] 失败 实例化模块 ngTouch 由于:[$injector:unpr] 未知提供者: ngClickDirectiveProvider http://errors.angularjs.org/1.2.25/$injector/unpr?p0=ngClickDirectiveProvider minErr/......
那么谁能告诉我正确的称呼方式是什么?
【问题讨论】:
-
是的,它工作正常。这只是我修剪并粘贴在这里的一个非常大的文件的一部分。
-
或者
angular.injector(['ng','webportal']).get -
是的,我比使用 document.body 更喜欢这个。谢谢你
-
原因是因为您的模块之一依赖于 ng-Touch,它实际上使用了 Angular 核心的 ngClickDirective 提供程序。所以你也需要 ng,但你通常需要包含
ng
标签: javascript angularjs