In genere ho appreso che l'implementazione della funzione può avere un nome per gli argomenti di funzione purché sia fornita nell'ordine corretto. Ciò rende la funzione astratta dal mondo esterno e i nomi locali non hanno alcun effetto sull'output. L'implementatore ha tutti i diritti per le variabili locali. Tuttavia, in angolare JS, sembra contrastare intuitivo per avere qualcosa di simile:
function Controller($scope)
{
$scope.name = "Something";
}
Se metto "bar" c'è invece "$ scope" Ottengo un errore. Questa non è la normale funzione a cui siamo abituati. Credo che abbia qualcosa a che fare con DI, ma qualcuno può spiegare questo concetto? Trovo difficile definirlo una "funzione" perché dipende dal mondo esterno, in particolare dal nome dell'argomento.
Se DI è la vera ragione, qualcuno può farmi sapere come viene richiamato? Normalmente posso pensare a DI fare del bene quando voglio prendere in giro un oggetto per un caso di test. In questo caso, quale ruolo gioca DI?
Nei normali scenari di DI che ho trovato, l'argomento che viene passato, fa un servizio per la funzione come say foo displayTime (clock) {clock.qualcosa}. Il tempo è solo un servizio per la funzione. Comunque qui trovo che, $ scope e framework sembrano fare la magia con la funzione che è solo un modo dichiarativo di esprimere la logica.
Edit: JS Apparentemente pause minify questa funzionalità e abbiamo bisogno di fare come in How do the function argument names in Angular.js objects connect to other objects?
Angolare valuta effettivamente gli argomenti (utilizzando Funzione.toString) e inietta la risorsa giusta, questa è una delle cose sconcertanti che impari quando inizi con angolare! vedere qui: http://stackoverflow.com/questions/16949889/how-do-the-function-argument-names-in-angular-js-objects-connect-to-other-object –
"In normali scenari di DI I si sono imbattuti in, l'argomento che viene passato fa un servizio per la funzione "... Questo è anche il caso in Angolare, gli ambiti sono comunque un po 'speciali ... https://github.com/angular/angular.js/ wiki/Understanding-Scopes che entra nei dettagli sugli ambiti e https://docs.angularjs.org/guide/scope che probabilmente si attacca di più a come dovresti usarli Ma potresti anche iniettare il tuo servizio di clock definito come: myApp.service ('clock', ['otherDependency', function (od) {this.something = "Im a clock!";}]); – Jens