In AngularJS, perché usiamo scope anziché $ scope nel link direttivo?

2

Solo curiosità sul perché ogni volta che vedo un esempio di una direttiva che usa un link, il parametro per scope è scope e non $ scope?

Questo mi morde sempre perché sono abituato a digitare $ scope, il mio cervello lo digita automaticamente e devo tornare indietro e correggerlo.

    
posta Scottie 12.09.2014 - 21:23
fonte

1 risposta

3

Per link , l'ambito non viene iniettato usando l'iniezione di dipendenza di Angular. I controller, ecc. Usano l'iniezione delle dipendenze che si basa sulla corrispondenza dell'argomento della funzione nomi var con qualcosa da iniettare.

link ha una firma di funzione prevista con argomenti espliciti:

function link(scope, element, attrs) { ... } 

Mentre quando lo si utilizza in un controller, l'analisi angolare controlla la funzione di controllo args esplicitamente per nome e determina esattamente come iniettare l'ambito nello stesso modo in cui vengono iniettati i servizi angolari. Nel contesto dell'iniezione di dipendenza, gli oggetti con un prefisso di $ sono considerati servizi forniti angolari.

Contrasto con iniezioni di dipendenze uso di nomi di variabili, non c'è niente che ti impedisca di chiamare gli argomenti del link come vuoi qualsiasi altra funzione. Potresti chiamarlo

function link(cat, banana, aardvark) { ... } 

e funzionerebbe ancora ...

Tuttavia con i controller ecc. $ scope con qualsiasi altro nome non è così dolce

angular.module('foo')
  .controller('blah', function (scope) {
  // doesn't work
...
}
    
risposta data 12.09.2014 - 22:27
fonte

Leggi altre domande sui tag