2016-02-07 32 views
0

當我嘗試以通常的方式創建angularjs模塊時,它工作得很完美,但是當我嘗試在aync函數調用的回調函數內部執行相同的代碼時,它會拋出錯誤未找到該模塊:AngularJS:從異步函數的回調中創建模塊時發現模塊錯誤

下面的代碼工作正常:

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

我定義ng-app="SSApp"指令在各自的html代碼。

回答

1

你的代碼沒有做你期望的原因是因爲,當DOM準備就緒時,Angular會自動引導模塊「SSApp」。但是,當它嘗試這樣做時,找不到由您的JavaScript代碼定義的此類模塊。

您的HTML中某處可能有ng-app="SSApp",這就是Angular試圖自動引導模塊的原因。

您可以選擇通過去除NG-程序指令和做

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

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

從我在你的代碼明白了,首先你要加載數據,然後將配置控制器添加到您的應用程序...所以您的應用定義首先,然後在你的回調配置

+0

試過您的解決方案已經手動引導模塊,但沒有工作,導致另一個錯誤相關的控制器 –