试图访问另一个内部工厂功能

时间:2016-06-08 08:59:29

标签: angularjs ionic-framework

我想知道是否可以在其他工厂功能中使用工厂内的功能以及如何使用。我试过,但它说该功能不是essists。例如,我有这个工厂:

    .factory("SyncService", function($q, $http, ...){
    return {
       function1: function(){
               //Do function1 things
               },
       function2: function(){
               //Here I want to call function1
               }
           }
    }

所以在这个例子中,在function2中调用function1是可行的吗?

3 个答案:

答案 0 :(得分:2)

你可以通过重新构建服务代码的方式来做到这一点。这是最好的做法:

.factory("SyncService", function($q, $http, ...){

    var fun = function(){
               //Do function1 things
               };
    var anotherFun = function(){
                fun();
               };
    var service {
        function1: fun ,
       function2: anotherFun
           }
    };

    return service;  

}

答案 1 :(得分:1)

你可以使用 this.function1();

lable

答案 2 :(得分:1)

您当然可以从其他工厂功能调用工厂功能。

的index.html

<html>

  <head>
    <script data-require="angular.js@*" data-semver="1.5.6" src="https://code.angularjs.org/1.5.6/angular.min.js"></script>
    <script data-require="ui-router@*" data-semver="1.0.0-alpha.5" src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.0-alpha.5/angular-ui-router.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="factory.js"></script>
    <script src="controller.js"></script>

  </head>

  <body ng-app="myApp" ng-controller="myCtrl">
    <h1>Hello Plunker!</h1>
  </body>

</html>

Facotory.js

angular.module('myApp',[])
  .factory('myFactory',function(){
    var obj = {};
    obj.myFunction1 = function(){
      this.myFunction2();
    }
    obj.myFunction2 = function(){
            alert("HEY!");
    }    

    return obj;

  });

Controller.js

angular.module('myApp')

  .controller('myCtrl',function($scope,myFactory){

    myFactory.myFunction1();

  })

这是工作的plunker https://plnkr.co/edit/SZV7i97WJHw7LDhIjyzW?p=preview