AngularJS:从异步函数的回调创建模块时未找到模块错误

时间:2016-02-07 04:05:36

标签: angularjs angularjs-module

当我尝试以通常的方式创建angularjs模块时,它工作得很完美,但是当我尝试在aync函数调用的回调函数中执行相同的代码时,它会抛出错误,找不到模块:

以下代码可以正常使用:

 var myApp = angular.module('SSApp',[]);

    myApp.controller('config', function($scope) {

    });

但是抛出错误:

Init_Data(function() {
    initApp();
});


function initApp() {
    var myApp = angular.module('SSApp',[]);

    myApp.controller('config', function($scope) {

    });

}

function Init_Data(callback) {
    chrome.storage.local.get(null, function(data) {
        window.data = data;
        callback();
    });
}

我在相应的html代码中定义了ng-app="SSApp"指令。

2 个答案:

答案 0 :(得分:1)

你的代码没有按照你的期望做的原因是因为,Angular试图引导模块" SSApp" DOM准备好后自动完成。但是,在尝试执行此操作时,找不到JavaScript代码定义的此类模块。

你的HTML中可能有ng-app="SSApp",这就是Angular尝试自动引导模块的原因。

您可以通过删除ng-app指令并执行

来选择手动引导模块

angular.bootstrap(document.documentElement, ['SSApp']);

答案 1 :(得分:0)

这是你必须做的改变:

 var myApp = angular.module("SSApp", []);

 Init_Data(function () {
     initApp();
 });

 function initApp() {            

     myApp.controller('config', function ($scope) {

     });

     console.log(myApp)

 }

 function Init_Data(callback) {
     setTimeout(function () {
         callback();
     },4000);                
 }

根据我在您的代码中的理解,首先您要加载数据然后将配置控制器添加到您的应用程序...所以首先定义您的应用程序然后在回调配置中