我正在努力在 AngularJS 中设置配置文件。是否可以在 AngularJS 中创建一个无法覆盖其密钥的工厂?比如我可以这样设置一个常量,不能被覆盖
module.constant('animals', {"cat": "meow", "dog": "woof"});
但我想做这样的事情,允许覆盖值而不是工厂本身
module.value('catSound','meow')
.value('dogSound','woof')
.factory('animals', ['catSound','dogSound', function(catSound, dogSound) {
return {
"cat": catSound,
"dog": dogSound
}
});
上面的工厂可以被覆盖,允许另一段代码拥有module.factory('animals',function(){ return 7 })
并破坏一切。但是,作为工厂,各个值可以(并且应该)是可覆盖的,因此我应该能够分配module.value('catSound','hiss')
并让事情仍然按预期工作。
我试过注入常量,但据我所知,这是不可能的。如何防止我的工厂声明被覆盖?我意识到在描述我想要的东西时,常量可能不是正确的术语,但我确实希望工厂的函数定义是常量。