AngularJS:常量与值

时间:2015-05-19 13:51:20

标签: angularjs

据我理解文档,Constant和Value之间唯一的具体区别是在应用程序配置阶段可以使用Constant,而Value只能在运行阶段使用。

我很好奇为什么在这种情况下需要值?他们真的只限制常数吗?

3 个答案:

答案 0 :(得分:79)

常量可以注入

装饰器不能截取常量,表示永远不应更改常量的值

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; 
});

值与常量不同,因为值无法注入配置但是它可以被装饰器拦截

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

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

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

答案 1 :(得分:3)

常量之间的差异是在配置阶段使用常量指定的值。

常量相同。 常量可在配置阶段使用,而则不可用。

另一个区别是顾名思义你无法改变常数的值。您分配的第一个值是它保留的值,如果您稍后尝试为其分配不同的值,它将被忽略。

以下是一个例子:

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);
});

控制台输出:

myValue: Second Assignment

myConstant: First Assignment

答案 2 :(得分:0)

但是,请记住,如果您将对象用作常量,则可以随时随地覆盖其值。例如

const version = '10.0'

无法更改,如果您查看控制台,它甚至会在更改其值时抛出错误,但

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

表现得像一个简单的值,您可以随时更改对象值,如下所示:

config.version = 5
tada,现在你的版本是5。 同样适用于app.const('constant', 'its me')