AngularJS:常量与值

csv*_*van 52 angularjs

据我所知,文档中,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

valueconstant之间的区别在于,在配置阶段可以使用使用 constant 指定的值。

嗯,valueconstant是一样的。常量可从配置阶段和值中获得不可用。

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

下面是一个例子:

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)