2015-05-19 13 views
46

Per quanto riguarda la documentazione, l'unica differenza concreta tra una costante e un valore è che una costante può essere utilizzata durante la fase di configurazione dell'app, mentre un valore è disponibile solo durante la fase di esecuzione.AngularJS: costanti vs valori

Sono curioso di sapere perché i valori sono necessari in questo caso? Non sono davvero solo costanti limitate?

+0

fantastico tutorial http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/ – vineet

risposta

71

Una costante può essere iniettata ovunque.

Una costante non può essere intercettata da un decoratore, che significa che il valore di una costante non dovrebbe mai essere modificato.

var app = angular.module('app', []); 

app.constant('PI', 3.14159265359); 

app.config(function(PI){ 
    var radius = 4; 
    //PI can be injected here in the config block 
    var perimeter = 2 * PI * radius; 
}); 

app.controller('appCtrl', function(PI) { 
    var radius = 4; 
    // calculate area of the circle 
    var area = PI * radius * radius; 
}); 

valore differisce da costante in quel valore non può essere iniettata in configurazioni, ma può essere intercettato da decoratori.

var app = angular.module('app', []); 

app.value('greeting', 'Hello'); 

app.config(function ($provide) { 
    $provide.decorator('greeting', function ($delegate) { 
     return $delegate + ' World!'; 
    }); 
}); 
+1

Sembra che la lingua è la stessa questo succo. https://gist.github.com/demisx/9605099 Gli esempi di codice qui sono migliori e illustrano la lingua.Proporrò una modifica che aggiunge un esempio della lingua "una costante può essere iniettata ovunque" - e implicita da "un valore non può essere iniettato in configurazioni", mostrando la costante usata nell'app.config, come mostrato [ qui] (http://stackoverflow.com/q/28416054/1175496) –

+0

Che cosa significa che il valore "non può essere iniettato in configurazioni"? qualche esempio? –

+1

@VasylGutnyk significa che * i valori * non sono disponibili durante la * fase di configurazione * e non è possibile immetterli nella funzione 'app.config' –

0

La differenza tra il valore e costante è che un valore specificato utilizzando costante è disponibile durante la fase di configurazione.

Bene è lo stesso per valore e costante. costante è disponibile dalla fase di configurazione e il valore non è.

L'altra differenza è che il nome implica che non è possibile modificare il valore di una costante. Il primo valore che gli assegni è il valore che mantiene, se provi ad assegnarlo a un valore diverso in seguito verrà ignorato.

Ecco un esempio:

mod.value("myValue", "First Assignment"); 

mod.value("myValue", "Second Assignment"); 

mod.constant("myConstant", "First Assignment"); 

mod.constant("myConstant", "Second Assignment"); 

mod.controller("MyController", function(myValue, myConstant) { 

    console.log("myValue: " + myValue); 

    console.log("myConstant: " + myConstant); 
}); 

uscita della console:

myValue: Second Assignment 

myConstant: First Assignment 
0

vero, tuttavia, tenere a mente se si utilizza un oggetto come una costante, il suo valore possono essere sovrascritti in qualsiasi momento, dovunque. Per esempio

const version = '10.0' 

non può essere modificato, se si dà un'occhiata alla console getta anche un errore quando si cambia il suo valore, ma

const config = { 
    'version': '8.6' 
} 

si comporta come un semplice valore, è possibile modificare la i valori degli oggetti in qualsiasi momento, come questo:

config.version = 5 

Tada, ora la versione è 5. Lo stesso vale per app.const('constant', 'its me')