不能在控制器角JS中注入工厂

时间:2014-06-21 19:56:53

标签: javascript angularjs

我是angulerJS的新手。我已经定义了一个工厂来从API获取数据但是当我尝试将工厂放在控制器中时我得到了错误。

这是工厂代码。

(Function () {

    var CategoriesFactory = function($http) {
        var factory = {};

        factory.getCategorys = function(account_id){
            return $http.get('http://localhost:18678/api/Transaction?account_id=2');
        };

        factory.getTransaction = function(acc_id){
            return $http.get('http://localhost:18678/api/Transaction?acc_id=2');
        };

        factory.getTransactionInCategory = function(category_id, from_date, to_date){
            return.$http.get('http://localhost:18678/api/transaction?category='+category_id+'&account=2&from=2015-01-                              01&to=2015-12-30');
        };
        return factory;
    };

    angular.module('AccApp').factory('CategoriesFactory', CategoriesFactory);
 }());  

这是控制器。

app.controller('CategoriesController',
  function ($scope, $routeParams, $http, CategoriesFactory) {

  })

这是错误。 未知提供者:CategoriesFactoryProvider< - CategoriesFactory

2 个答案:

答案 0 :(得分:0)

我猜你一定忘记将AccApp注入你定义应用程序的mai模块。

angular.module("app", ['AccApp']);

请做这样的事情。

希望这有帮助!

答案 1 :(得分:0)

为什么要尝试以奇怪的方式编写角度代码? 角度的目标是简单性

 var app = angular.module('AccApp',[]);

    app.factory('CategoriesFactory',function($http){// you can cut and paste this factory into a seperate file if you wish
       return{
              getCategorys:function(account_id){
               return $http.get('http://localhost:18678/api/Transaction?account_id=2');
                },
              getTransaction:function(acc_id){
               return $http.get('http://localhost:18678/api/Transaction?acc_id=2');
                },
                getTransactionInCategory : function(category_id, from_date, to_date){
             return.$http.get('http://localhost:18678/api/transaction?category='+category_id+'&account=2&from=2015-01-                              01&to=2015-12-30');
                };
              }
      });

现在您只需将此工厂注入控制器:

     app.controller('CategoriesController',function ($scope, $routeParams, $http, CategoriesFactory){

       console.log(CategoriesFactory.getCategorys(getCategorys));
       });