2013-04-08 8 views

risposta

42

No, la funzione di collegamento ha una serie predefinita di parametri.

function link($scope, $element, attrs, ctrl) { 
    //Your method 
} 

Sono

  1. ambito dell'elemento
  2. La cartuccia (jquery/mini jquery avvolto)
  3. attributo impostato dell'elemento
  4. Eventuali controller utilizzati in required
+1

E la minificazione? '['$ scope', '$ elemento', '$ attrs', funzione ($ scope, $ element, $ attrs) {...}' – Clev3r

+11

La funzione di collegamento non richiede la sintassi dell'array minification. –

+0

Puoi dirci di più sulla parte controller? È un oggetto con un valore per ogni controller? – heneryville

21

Se si desidera t o utilizzare DI con una direttiva (come ho fatto io), mettere gli argomenti da iniettare nella funzione direttiva fabbrica anziché la funzione link:

module.directive('name', function($timeout) { 
    return function(scope, element, attrs) { 
     ... 
    }; 
}); 

per consentire la minimizzazione, mettere l'argomento della funzione in una matrice come te do per i controller:

module.directive('name', ['$timeout', function($timeout) { 
    return function(scope, element, attrs) { 
     ... 
    }; 
}]); 

Vedi l'ora corrente esempio in the docs.

Modifica: See here per una demo che inietta il servizio $timeout. Puoi fare la stessa cosa quando si restituisce un oggetto direttiva (ad esempio return {restrict: 'E', link: function() {...}}) anziché una funzione.