在angular.module之前加载javascript文件

时间:2015-07-03 16:09:42

标签: javascript jquery angularjs

我想创建一种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文件之前,它可以工作,但我不希望这样:/

任何解决方案?

谢谢你的答案!

1 个答案:

答案 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