据我所知,文档中,Constant和Value之间唯一的具体区别是在应用程序配置阶段可以使用Constant,而Value只能在运行阶段使用.
我很好奇为什么在这种情况下需要值?他们真的只是有限的常数吗?
Art*_*ian 80
可以在任何地方注入常数.
常量不能被装饰器拦截,这意味着永远不应该改变常量的值.
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;
});
Run Code Online (Sandbox Code Playgroud)
值不同于常量,因为值不能注入配置,但它可以被装饰器拦截.
var app = angular.module('app', []);
app.value('greeting', 'Hello');
app.config(function ($provide) {
$provide.decorator('greeting', function ($delegate) {
return $delegate + ' World!';
});
});
Run Code Online (Sandbox Code Playgroud)
小智 7
value和constant之间的区别在于,在配置阶段可以使用使用 constant 指定的值。
嗯,value和constant是一样的。常量可从配置阶段和值中获得不可用。
另一个区别是顾名思义,您不能更改常量的值。您分配给它的第一个值是它保留的值,如果您稍后尝试为其分配不同的值,它将被忽略。
下面是一个例子:
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);
});
Run Code Online (Sandbox Code Playgroud)
控制台输出:
myValue: Second Assignment
myConstant: First Assignment
Run Code Online (Sandbox Code Playgroud)