【发布时间】:2016-05-24 01:21:52
【问题描述】:
我正在尝试创建一个服务以在我的 Angular 应用程序中使用,该服务使用 $http 从 .json 文件中提取数据。这是工厂的样子:
var trooNewsServices = angular.module('trooNewsServices', []);
trooNewsServices.factory('Articles', ['$http',
function($http){
$http.get('resources/articles.json').success(function(data) {
return data;
});
}]);
我将trooNewsServices 依赖项传递到我的模块声明中。我尝试在我的新 Articles 服务中传递的任何控制器,我都会得到一个
“无法实例化控制器 HomeController”
控制台出错。不知道我错过了什么/这段代码有什么问题。我应该使用$resource 而不是$http 吗?
这是我将“trooNewsServices”传递到我的主模块的方式:
var TrooNews = angular
.module('TrooNews', ['ngMaterial', 'ngNewRouter', 'trooNewsServices'])
.config(function($mdThemingProvider) {
$mdThemingProvider
.theme('default')
.primaryPalette('indigo')
.accentPalette('pink');
})
.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: false,
requireBase: false
});
});
这是我尝试将“文章”注入我的一个控制器的方法:
TrooNews.controller('HomeController', ['Articles',
function(Articles) {
this.name = 'Troo News';
this.articles = Articles.query();
}]);
这是我在“AppController”中设置路由的方式:
TrooNews.controller('AppController', function($router, $mdSidenav, $mdToast, $parse, $http) {
$router.config([{
path: '/',
component: 'home'
}, {
path: '/home',
component: 'home'
}, {
path: '/about',
component: 'about'
}, {
path: '/settings',
component: 'settings'
}, {
path: '/article/:id',
component: 'article'
}]);
this.toggleSidenav = function(menuId) {
$mdSidenav(menuId).toggle();
};
this.navigateTo = function(link) {
var parts = link.match(/^(.+?)(?:\((.*)\))?$/);
var url;
if (parts[2]) {
url = '.' + $router.generate(parts[1], $parse(parts[2])());
} else {
url = '.' + $router.generate(parts[1]);
}
$mdToast.show($mdToast.simple().content('Navigate To: ' + url).position('bottom right'));
$router.navigate(url);
this.toggleSidenav('left');
};
});
【问题讨论】:
-
你能说明你是如何将服务传递给控制器的吗?
-
@tymeJV - 更新显示!
-
@FuzzyTree 我将 .success 更改为 .then 并得到了完全相同的错误
标签: javascript angularjs http