2015-09-01 3 views
0

У меня есть приложение Rails, которое получает сообщения по категориям, используя show действие.AngularJS and Rails - сообщения по категориям

Маршрут: /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. Что он должен возвращать и как?

ответ

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; 
}]); 
Смежные вопросы