我想创建一种js库。用户应该只包含ONE js文件,他可以使用我的所有功能。
我正在使用angularjs。
在我的angular.module中,我有几个“注射器”(如果它不是名字,请更正我)定义如下:
var app = angular.module('WDX', ['ui.bootstrap', 'ngRoute', 'ng-currency', 'ngSanitize']);
为了使它工作,我需要在角度js文件之前包含一些JS文件(如“ng-currency.js”)。但是,我希望用户只需要包含这个angularjs文件(或者只包含其他一个文件)......
我尝试创建一个新的JS文件来加载我的angularjs文件之前的所有内容,如:
$.getScript("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js", function () { });
$.getScript("/Scripts/ng-currency.js", function () { });
$.getScript("/Scripts/kendo.all.min.js", function () { });
$.getScript("/Scripts/placeholder.js", function () { });
$.getScript("/Scripts/angular-sanitize.js", function () { });
但我仍然有这个错误:
angular.js:38未捕获错误:[$ injector:modulerr] http://errors.angularjs.org/1.3.12/ $注射器/ modulerr P0 =试验&安培; P1 =错误%3A%20 ... 0D%20(HTTP%3A%2F%2Flocalhost%3A46223%2FScripts%2Fangular.min.js%3A17%3A381)
如果我在html中包含所有脚本,在angularjs文件之前,它可以工作,但我不希望这样:/
任何解决方案?
谢谢你的答案!
答案 0 :(得分:1)
你有没有试过手动引导并在angular.bootstrap之前运行你的脚本如下?
angular.element(document).ready(function() {
// add your script here
angular.bootstrap(document, ['WDX']);
});
// OR you could add event listener in your app.js as follows:
function onDocumentReady() {
// add your script here
angular.bootstrap(document, ["WDX"]);
}
document.addEventListener('DOMContentLoaded', onDocumentReady, false);
var app = angular.module('WDX', ['ui.bootstrap', 'ngRoute', 'ng-currency', 'ngSanitize']);
注意:在进行手动引导时从DOM中删除ng-app