[angularjs] ¿Puedo hacer que una función esté disponible en cada controlador en angular?



Answers

También puedes combinarlos supongo:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
    <script type="text/javascript">
        var myApp = angular.module('myApp', []);

        myApp.factory('myService', function() {
            return {
                foo: function() {
                    alert("I'm foo!");
                }
            };
        });

        myApp.run(function($rootScope, myService) {
            $rootScope.appData = myService;
        });

        myApp.controller('MainCtrl', ['$scope', function($scope){

        }]);

    </script>
</head>
<body ng-controller="MainCtrl">
    <button ng-click="appData.foo()">Call foo</button>
</body>
</html>
Question

Si tengo una función de utilidad foo que deseo poder llamar desde cualquier lugar dentro de mi declaración ng-app . ¿Existe alguna forma de que pueda ser accesible globalmente en la configuración de mi módulo o debo agregarlo al alcance en cada controlador?




AngularJs tiene " Servicios " y " Fábricas " solo para problemas como el tuyo. Estos se usan para tener algo global entre Controladores, Directivas, Otros Servicios o cualquier otro componente de angularjs. Puedes definir funciones, almacenar datos, hacer funciones de cálculo o lo que sea que desees. querer dentro de los Servicios y usarlos en los Componentes de AngularJs como Global .like

angular.module('MyModule', [...])
  .service('MyService', ['$http', function($http){
    return {
       users: [...],
       getUserFriends: function(userId){
          return $http({
            method: 'GET',
            url: '/api/user/friends/' + userId
          });
       }
       ....
    }
  }])

si necesitas más

Encuentre más sobre por qué necesitamos servicios y fábricas de AngularJs




Related