Estoy totalmente confundido acerca de inyectar en Angular. No sé dónde usar y por qué. Es utilizado solamente con la fábrica como se describe aquí?

myController.$inject = ['$scope','notify'];

Aquí notify es el nombre de la fábrica.

InformationsquelleAutor unknownbits | 2013-09-09

4 Comentarios

  1. 99

    Que es una estrategia para apoyar la Inyección de Dependencia después de que su código es record (si usted elige minify).

    Cuando se declara un controlador, la función toma parámetros:

    function ($scope, notify)

    Cuando se comprime el código, la función tendrá este aspecto:

    function (a, b)

    Desde AngularJS utiliza el parámetro de la función de los nombres para inferir DI, tu código va a romper porque AngularJS no sabe acerca de a o b.

    Para resolver este problema, se les proporcionó nuevas formas de declarar los controladores (o de otros servicios/fábricas/etc) para que la materia:

    1. Para los controladores, el uso de la $inject método – aquí se pasa una matriz de literales que se asignan a los parámetros de su función de control. Por lo tanto, si usted proporciona

      ['$scope', 'notify']

      a continuación, el valor del primer parámetro a su función será la de un ámbito de objetos asociados con este controlador, y el segundo parámetro será el informe al servicio técnico.

    2. Al declarar nuevos controladores, servicios, etc, se puede utilizar la matriz de sintaxis literal. Aquí, puedes hacer algo como esto:

      angular.module('myModule').controller('MyController', ['$scope', 'notify', function ($scope, notify) {
          ...
      }]);

      La matriz como parámetro a la función de controlador de mapas de la DI objetos a los parámetros de la función.

    Yo prefiero la Opción #2 al declarar controladores etc ya que es más fácil de leer/entender/cross-check, ya que es en el mismo lugar.

    • gracias por esta respuesta.Yo también quiero saber de donde el uso de la inyección DI y por qué? sólo por una razón debemos usarlo yo.e.la función de (a, b). lo podemos llamar como función myController($scope, notificar).
    • Cuando el uso de la estricta di modo, es obligatorio el uso del mencionado formato, por la misma razón dada por @Marca.
  2. 21

    Para complementar @marca respuesta, es importante tener en cuenta que el uso de la $inyectar método en el estilo de:

    MyController.$inject = ['$scope', 'notify'];

    le permite añadir la inyección de dependencias al edificio proveedores de que son la única angular recetas que no permitir que los ‘amigos’ de estilo de anotación
    es decir:

    .controller('MyController', ['$scope', 'notify',... 

    dependencias de ser declarada.

    • Habría un ejemplo para de esta manera?. Gracias.
  3. 5

    La manera que usted debe utilizar $inject es:

    function ApplicationController($scope){
        $scope.greet = "Foo is Not Great!5";
    }
    
    ApplicationController.$inject = ['$scope','$ionic'];
    
    app.controller('ApplicationController', ApplicationController);

    Necesitamos para este como para proteger el código de uglifying o minimización.

    function(firstName,lastName) puede llegar a convertirse en function(n,m).

    Así que para AngularJS se va a romper el código porque $scope puede ser sustituido por ‘s’. Esto es debido a que sin la $ firmar el angularJS no ser capaz de reconocer el código.

Dejar respuesta

Please enter your comment!
Please enter your name here