【问题标题】:AngularJS: Module not found error when creating module from asynchronous function's callbackAngularJS:从异步函数的回调创建模块时找不到模块错误
【发布时间】:2016-02-07 04:05:35
【问题描述】:

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

【问题讨论】:

    标签: angularjs angularjs-module


    【解决方案1】:

    您的代码没有按照您的预期执行的原因是,当 DOM 准备好时,Angular 会尝试自动引导模块“SSApp”。但是,当它尝试这样做时,找不到您的 JavaScript 代码定义的此类模块。

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

    您可以选择通过删除 ng-app 指令并执行手动引导模块

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

    【讨论】:

      【解决方案2】:

      这是你必须做的改变:

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

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

      【讨论】:

      • 已经尝试过您的解决方案,但没有奏效,导致另一个与控制器相关的错误
      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2019-07-06
      • 2021-01-20
      相关资源
      最近更新 更多