2014-04-16 39 views
14

我有一個模塊工廠...內用另一家工廠AngularJS

angular.module('myModule', []); 

然後工廠

angular.module('myModule') 
.factory('factory1', [ 
    function() { 
    //some var's and functions 
} 
]); 

然後另一家工廠

angular.module('myModule') 
.factory('factory2', [ 
    function() { 
    //some var's and functions BUT I want to use some var's from factory1 
} 
]); 

但我想使用factory2中factory1的一些變量,我怎樣才能將factory1注入factory2?

回答

18

這是我會做:

在廠一

angular.module('sampleApp') 
    .factory('factory1', function() { 
     var factory1 = {}; 

     factory1.method1 = function() { 
      return true; 
     }; 

     factory1.method2 = function() { 
      return "hello"; 
     }; 

     return factory1; 
    } 
); 

在工廠二

angular.module('sampleApp') 
    .factory('factory2', ['factory1', 
     function(factory1) { 

      var factory2 = {}; 

      factory2.method3 = function() { 
       return "bye vs " + factory1.method2(); 
      }; 

      return factory2; 
     } 
    ]); 
+4

沒錯呼叫SessionPresenters,[這裏有一個普拉克(http://plnkr.co/edit/vscK9lLBhinBL9sYo65z?p=preview) –

+0

感謝@MohammadSepahvand很好的補充。 – Dalorzo

+0

是的,很棒。謝謝。 – zhulinpinyu

1

這是我做的和工作得很好。從會議

angular.module('tryme3App') 
    .factory('Session', function ($resource, DateUtils, SessionPresenters) { 
     return $resource('api/sessions/:id', {}, { 
      'query': { method: 'GET', isArray: true}, 
      'get': { 
       method: 'GET', 
       transformResponse: function (data) { 
        data = angular.fromJson(data); 

        var result = SessionPresenters.get({id: data.id}) 
        data.presenters = result; 
        return data; 
       } 
      }, 
      'update': { method:'PUT' } 
     }); 
    }).factory('SessionPresenters', function ($resource, DateUtils) { 
     return $resource('api/session.Presenters/:id', {}, { 
      'query': { method: 'GET', isArray: true}, 
      'get': { 
       method: 'GET', isArray: true 
      }, 
      'update': { method:'PUT' } 
     }); 
    });