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