我正在使用 angular-seed 项目。 我正在尝试从 mysql 数据库中检索数据。 我需要知道如何为每个 View 定义不同的 Controller 。 例如,我有这样的结构:
js
|_modules
|_companies
|_controller.js
|_data.js
|_app.js
|_base.js
我已将此路由添加到 app.js
.state('app.companies', {
url: '/companies',
title: 'Companies',
templateUrl: helper.basepath('companies.html'),
controller: 'companiesCtrl' //THIS THROWS THE ERROR BELOW
})
companies.html 已将脚本添加到页面底部
<script src="app/js/modules/companies/data.js"></script>
<script src="app/js/modules/companies/controller.js"></script>
这是controller.js的代码(也测试了注释部分)
(function() {
'use strict';
angular
.module('appname')
.controller('companiesCtrl', companiesCtrl);
companiesCtrl.$inject = ['$scope','companiesData','$log'];
function companiesCtrl($scope, companiesData, $log) {
console.log('asd'); //NEVER REACH THIS LOG
};
});
/*var app = angular
.module('appname')
.controller('companiesCtrl', ['$scope','companiesData','$log', function($scope, companiesData, $log){
console.log('asd'); //NEVER REACH THIS LOG
$scope.companies = {};
Data.get('companies').then(function(data){
$scope.companies = data.data;
console.log('($scope.companies)');
});
}]);
*/
但我不断得到
Error: [ng:areq] Argument 'companiesCtrl' is not a function, got undefined
如果我在我的 View 上编写脚本 ng-controller="companiesCtrl"
也是如此。
最佳答案
将您的功能更改为:
(function() {
'use strict';
angular
.module('appname')
.controller('companiesCtrl', companiesCtrl);
companiesCtrl.$inject = ['$scope','companiesData','$log'];
function companiesCtrl($scope, companiesData, $log) {
console.log('asd'); //NEVER REACH THIS LOG
};
})();// execute this function then it will work
参见 this example如果你删除 ()
breaket 那么它会给你错误。
如果可能,那么创建这样的 Controller :
angular.module('appname')
.controller('companiesCtrl', ['$scope', function($scope) {
console.log('asd'); //NEVER REACH THIS LOG
}]);
关于javascript - Angularjs Controller 不工作,抛出错误(新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389260/