如何解决角度模块未定义

问题描述 投票:0回答:2

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

  1. 发票Ctrl
  2. 计费Ctrl
  3. 发票付款Ctrl
  4. 发票视图Ctrl

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!';

});
angularjs angularjs-controller angularjs-module
2个回答
1
投票

当你这样做的那一刻:

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

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


0
投票

此代码:

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

创建一个新模块。

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

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

我会这样做:

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

    angular.module('发票.controller',[]); angular.module('测试',[]);

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

    引用该模块

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

© www.soinside.com 2019 - 2024. All rights reserved.