2014-06-21 108 views
-1

我是angulerJS的新手。我已經定義了一個工廠從API獲取數據,但是當我嘗試將工廠放在控制器中時出現錯誤。無法在控制器角度注入工廠JS

這是工廠代碼。

(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) { 

    }) 

這裏是錯誤。 未知的供應商:分類工廠供應商< - 分類工廠

+0

是您'app'模塊調用_AccApp_? –

+0

是的,它被稱爲AccApp – MohamedAbbas

+0

@ user2918388:請顯示所有相關的代碼:你如何初始化你的模塊,你得到的錯誤的跟蹤是什麼等 – gkalpak

回答

0

我想你一定忘了將AccApp注入你定義你的應用的mai模塊。

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

請做類似這樣的事情。

希望這會有所幫助!

+0

var app = angular.module(「AccApp」,[]);那我寫的 – MohamedAbbas

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)); 
     }); 
+0

我試圖在一個diffrant文​​件中分離工廠代碼 – MohamedAbbas

+0

好吧,但是按照我的方式,它是最好的 現在你可以將這個工廠剪切並粘貼到一個單獨的文件中 我編輯 – Milad

+0

爲什麼沒有無論如何,你接受我的答案?不是很有魅力?有問題嗎? – Milad