尝试将我的控制器和工厂与我的大型 app.js 文件分开。我通过将所有内容放入一个文件来学习Angular,但现在我试图通过分离我的文件来组织它。
最初我有类似的东西( app.js )。
var app = angular.module("app", ['ngRoute']);
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'pages/home.html',
controller: 'HomeController'
})
.when('/home', {
templateUrl: 'pages/home.html',
controller: 'HomeController'
})
.when('/faq', {
templateUrl: 'pages/faq.html',
controller: 'FAQController'
})
.otherwise({
redirectTo: '/unknown'
});
});
app.factory('FAQMethodService', function() {
return {
faqs: [
{
question : "Another FAQ",
answer : "Another FAQ."
},
{
question : "Another FAQ",
answer : "Another FAQ."
},
{
question : "Another FAQ",
answer : "Another FAQ."
},
{
question : "Another FAQ",
answer : "Another FAQ."
}
]
};
});
app.controller('FAQController', function($scope, FAQMethodService) {
$scope.faqList = FAQMethodService.faqs;
$scope.title = "FAQ";
});
app.controller('HomeController', function($scope) {
$scope.title = "Home";
});
对于我的第一步分离,我从 app.js 中删除了 FAQController 部分,并创建了一个名为 faqController.js 的新文件(我把它包含在我的index.html中)。
angular.module('app').controller('FAQController', ['$scope', '$http', function($scope, FAQMethodService) {
$scope.faqList = FAQMethodService.faqs;
$scope.title = "FAQ";
}]);
当我打开我的FAQ页面时,我得到 $ scope.title 变量(因为我显示它),但我的 FAQMethodService 信息没有出现。
问题:当我的Controller在另一个文件中时,如何获取我的工厂(我可以将工厂分成另一个文件)吗?
答案 0 :(得分:2)
使用数组表示法注册事物时,字符串参数的名称和顺序必须与构造函数的参数序列完全匹配。
你有不匹配的地方。您已经要求Angular将$ http作为FAQMethodService
注入您的控制器 .controller('FAQController', ['$scope', '$http', function($scope, FAQMethodService) {
应该是:
.controller('FAQController', ['$scope', 'FAQMethodService', function($scope, FAQMethodService) {