【问题标题】:AngularJS undefined Controller using requireAngularJS未定义控制器使用require
【发布时间】:2017-05-12 11:06:45
【问题描述】:

我在我的应用程序中使用 requireJS。

每当我尝试在我的模块上注册控制器时,它都会说控制器未定义。这是我的控制器,它位于 login.controller.js

function LoginController() {

}

这是我的模块代码:

require('angular')
require('@uirouter/angularjs');
require('./service/storage')
require('./controller/login.controller')

angular.module('SecurityModule', ['ui.router'])
    .controller('LoginController', LoginController);

// Routing
    angular.module('SecurityModule')
        .config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
            $locationProvider.hashPrefix('');

            $stateProvider.state('login', {
                url: '/login',
                templateUrl: '/app/resources/view/security/login.html',
                controller: 'LoginController',
            });
        })
    ;

当我检查我的 bundled.js 时,LoginController 的声明首先出现。那么为什么它仍然未定义?

谢谢。

请注意,我使用 browserify(然后使用 commonJS)来捆绑我的文件。

【问题讨论】:

  • 显然我所做的是将它分配给变量,如下所示: var LoginController = require(....);

标签: javascript angularjs require


【解决方案1】:

正如documentation 所说:

模块是配置和运行块的集合 在引导过程中应用于应用程序。在其 该模块的最简单形式由两种块的集合组成:

配置块 - 在提供者注册期间执行 和配置阶段。 只能注入提供者和常量 进入配置块。这是为了防止意外实例化 在完全配置之前的服务。

angular.module('myModule', []).
config(function(injectables) { // provider-injector
  // This is an example of config block.
  // You can have as many of these as you want.
  // You can only inject Providers (not instances)
  // into config blocks.
}).
run(function(injectables) { // instance-injector
  // This is an example of a run block.
  // You can have as many of these as you want.
  // You can only inject instances (not Providers)
  // into run blocks
});

【讨论】:

  • 这似乎不是问题;他们根本没有尝试将控制器注入到配置块中。
猜你喜欢
  • 2015-08-03
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多