我有一个Rails应用,可以使用show
操作按类别获取帖子。
路线是:/categories/:id(.:format) categories#show
.json
也会呈现给定类别的帖子,因为我修改了as_json
方法以包含帖子。
从AngularJS部分开始,我使用ui-router
和angular-rails-templates
并且我有:
服务:
var app = angular.module('app', ['ui.router', 'templates']);
app.factory('categories', ['$http', function($http) {
var o = {
categories: []
};
o.get = function(id) {
return $http.get('/category/' + id + '.json').then(
function(res){ return res.data; }
);
};
}]);
控制器:
app.controller(
'CategoriesCtrl',
[
'$scope',
'categories',
'category',
function($scope, categories, category) {
$scope.category = category; //just for testing purposes
}
]
);
配置
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider.state(
'category',
{
url: '/category/:categoryId',
templateUrl: 'categories/_categories.html',
controller: 'CategoriesCtrl'
}
);
$urlRouterProvider.otherwise('home');
}
]);
我不明白出了什么问题。日志是"Error: [$injector:undef] Provider 'categories' must return a value from $get factory method.
它想要返回的内容以及如何返回?
答案 0 :(得分:2)
您错过了从工厂返回o
对象,它应该是:
app.factory('categories', ['$http', function ($http) {
var o = {
categories: []
};
o.get = function (id) {
return $http.get('/category/' + id + '.json').then(function (res) {
return res.data;
});
};
// You missed this
return o;
}]);