如何解决 angular 模块未定义

How to solve angular module got undefined

我在不同的文件中有四个控制器

  1. 发票控件
  2. 计费控制
  3. 发票支付控件
  4. InvoiceViewCtrl

2、3、4 有这个 angular.module('invoice.controller',[])

1 有这个 angular.module('test',[])

在我的 app.js 中,我使用以下代码

angular.module('invoiceapp', ['invoice.controller','test','starter.services','ngDialog','angularMoment'])

现在每当我尝试将 1 更改为 2,3,4

Argument 'InvoiceCtrl' is not a function, got undefined

我还尝试为每个控制器删除 angular.module 中的 []

谁知道如何解决这个问题

提前致谢!

P.S 每个控制器都在一个单独的文件中。

billing.controller.js
payment.controller.js
invoice.controller.js
view.controller.js

angular.module('invoice.controller', [])

.controller('BillingCtrl', function($scope,$http,Dialogs,Invoices){

    $scope.status = 'Billing OK!';

});

angular.module('invoice.controller', [])

.controller('InvoicePaymentCtrl', function($scope,$http,Dialogs,Invoices){

    $scope.status = 'Invoice Payment OK!';

});

angular.module('invoice.controller', [])

.controller('InvoiceCtrl', function($scope,$http,Dialogs,Invoices){

    $scope.status = 'Invoice OK!';

});

angular.module('invoice.controller', [])

.controller('InvoiceViewCtrl', function($scope,$http,Dialogs,Invoices){

    $scope.status = 'Invoice View OK!';

});

此代码:

angular.module('invoice.controller',[])

创建一个新模块。

您需要构建代码以创建模块一次,然后再使用它们。然后通过获取对之前创建的模块的引用来附加控制器:

var module = angular.module('invoice.controller');

我会这样做:

  • 在 app.js 文件中我会做:

    angular.module('invoice.controller',[]); angular.module('test',[]);

  • 然后,在每个其他文件中,我将使用

    引用该模块

    var 模块 = angular.module('invoice.controller'); module.controller('InvoiceCtrl',...)

你这样做的那一刻:

angular.module('invoice.controller', [])

你创建了一个全新的模块,你可以省略后续的模块声明,只使用这样的控制器:

// app.js file
angular.module('invoice.controller', [])

// File #1
angular.module('invoice.controller')
.controller('BillingCtrl', function($scope,$http,Dialogs,Invoices){

    $scope.status = 'Billing OK!';

})

// File #2
angular.module('invoice.controller')
.controller('InvoicePaymentCtrl', function($scope,$http,Dialogs,Invoices){
$scope.status = 'Invoice Payment OK!';
})

// File #3
angular.module('invoice.controller')
.controller('InvoiceCtrl', function($scope,$http,Dialogs,Invoices){
    $scope.status = 'Invoice OK!';
}) 

// File #4
angular.module('invoice.controller')
.controller('InvoiceViewCtrl', function($scope,$http,Dialogs,Invoices){
    $scope.status = 'Invoice View OK!';
});

注意到模块上缺少 [] 了吗?这是因为使用 [] 创建了应用程序本身的另一个实例:)