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

AngularJS: Module not found error when creating module from asynchronous function's callback

当我尝试以通常的方式创建 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" 指令。

这是你必须做的改变:

 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);                
 }

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

您的代码未按预期运行的原因是,Angular 尝试在 DOM 准备就绪时自动 bootstrap 模块 "SSApp"。但是,当它试图这样做时,找不到由您的 JavaScript 代码定义的模块。

您的 HTML 中某处可能有 ng-app="SSApp",这就是为什么 Angular 尝试自动 bootstrap 模块。

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

来手动选择 bootstrap 模块

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