【问题标题】:Initialize ng-admin module in a callback function在回调函数中初始化 ng-admin 模块
【发布时间】:2016-01-09 23:04:07
【问题描述】:

我正在尝试配置一个 ng-admin 应用程序。我想在开始配置之前从文件中加载一些数据,但是当我尝试在回调中执行此操作时,我收到以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module adminModule due to:
Error: [$injector:nomod] Module 'adminModule' is not available!
You either misspelled the module name or forgot to load it.
If registering a module ensure that you specify the dependencies as the second argument.

代码如下:

$.get('/api/schema', function buildNgConfig(data) {
    var adminModule = angular.module('adminModule', ['ng-admin']);
    adminModule.config(['NgAdminConfigurationProvider', function (nga) {
        var app = nga.application(data.label).baseApiUrl('/api/');
        // ...

如果我将 adminModule.config 从 ajax 加载回调中取出(并使用页面中嵌入的数据,因此我不需要回调)并将所有内容放在全局范围内,它就可以工作。

如果我想在函数中初始化 Angular 模块,我需要做些什么吗?

【问题讨论】:

    标签: angularjs ng-admin


    【解决方案1】:

    好的,在朋友的帮助下解决了这个问题。该错误是 Angular 在创建模块之前自动初始化的结果。有:

    <body ng-app="myApp">
        <div ui-view></div>
    

    在你的 HTML 中告诉 Angular 立即初始化自己。在回调中延迟初始化意味着您的 Angular 模块将不存在,并且 Angular 尝试对其进行初始化将失败。

    Angular 的引导过程记录在 here,以及有关如何推迟初始化的说明。

    要使其与 ng-admin 一起使用,请从正文中删除 ng-app:

    <body>
        <div ui-view></div>
    

    然后在你的应用 js 中,你可以推迟初始化。例如:

    angular.element(document).ready(function() {
        var myApp = angular.module('myApp', ['ng-admin']);
        myApp.config(['NgAdminConfigurationProvider', function (nga) {
            var app = nga.application('My App').baseApiUrl('/api/');
            var someEntity = nga.entity(...
            // add entities
            nga.configure(app);
        }]);
        // Now we can manually boostrap
        angular.bootstrap(document, ['myApp']);
    });
    

    这等待页面加载而不是立即执行,并且所有内容都在回调范围内而不是全局范围内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多