AngularJS"常数"厂

时间:2013-03-01 16:00:02

标签: configuration angularjs constants factory

我正在设置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')并使事情仍然按预期工作。

我已经尝试过注入常量,但据我所知,这是不可能的。如何防止我的工厂声明被覆盖?我意识到常量在描述我想要的东西时可能不是正确的术语,但我确实希望工厂的函数定义是恒定的。

1 个答案:

答案 0 :(得分:2)

在javascript中一切都是可变的,所以设置这样的东西是棘手的,永远不会完全失败。我在角度代码中四处查看,发现没有任何证据证明你似乎要求保护机制。

我的建议是忍受风险。除了测试和漂亮的长名之外,不值得尝试保护自己。我假设你曾被咬过一次,但我认为机会很低,除非你定义工厂的名字很短。