Angularjs 角度-使用常量配方vs值配方

Angularjs 角度-使用常量配方vs值配方,angularjs,Angularjs,读了这篇文章后,我对一些事情感到好奇: 为什么我要使用值而不是常量?由于常数可作为值使用,并且在配置阶段中也可用,因为与值相反,常数在控制器、指令等之前编译和计算。 当您需要在编译和评估控制器、指令之前提供控制器、指令和其他不可用的内容时,您应该使用常量配方 例如,我喜欢使用常量配方来保持我的应用程序«神奇独角兽字符串»清晰 更新 常量和值本质上都是通过$get方法注入单例的。这里没什么新鲜事 两者之间的主要区别在于,常量是一个可以在任何地方注入的值,但它的值不能在应用程序的生命周期中更改,因为

读了这篇文章后,我对一些事情感到好奇:


为什么我要使用
而不是
常量
?由于常数可作为值使用,并且在
配置
阶段

中也可用,因为与值相反,常数在控制器、指令等之前编译和计算。 当您需要在编译和评估控制器、指令之前提供控制器、指令和其他不可用的内容时,您应该使用常量配方

例如,我喜欢使用常量配方来保持我的应用程序«神奇独角兽字符串»清晰

更新

常量和值本质上都是通过$get方法注入单例的。这里没什么新鲜事

两者之间的主要区别在于,常量是一个可以在任何地方注入的值,但它的值不能在应用程序的生命周期中更改,因为它不能被装饰程序截获

例如,PI的值就是一个例子。您不希望有人更改PI的值,因此在本例中,您可以将其定义为常量

另一方面,值是一个简单的可注入值。但是,它与常量不同,因为它不能到处注入,例如注入到配置中,但可以被装饰程序拦截

长话短说,如果您试图定义的内容是不可变的,并且您不希望在应用程序的生命周期中对其进行更改,或者如果您需要将该服务注入到配置中,则必须使用常量。另一方面,如果您定义的值在应用程序的生命周期中会发生变化,则必须使用值配方

如果不让我知道,希望这是有意义的。

  • 可以在运行时更改,即装饰
  • 常量
    已修复-无法更改

是的,但我的问题正好相反:为什么要使用
而不是
常量
<代码>值
看起来非常像
常量
,但可能的用例较少。
angular.module('colors', [])
       .value('favoriteColors', ['red']);

angular.module('main', ['colors']);
       .config(function config($provide) {
           $provide.decorator('favoriteColors', function($delegate) {
               return $delegate.concat(['green']);
           });
       })
       .controller('MainCtrl', function MainController(favoriteColors) {
           console.log('Favorite colors are:', favoriteColors); // red, green
       });