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']);
当我尝试以通常的方式创建 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']);