【问题标题】:Accessing AngularJS constants访问 AngularJS 常量
【发布时间】:2014-06-18 13:02:50
【问题描述】:

我的 AngularJS 应用程序中有以下常量,并希望使用下面显示的函数访问它的值。问题是我将键作为字符串传递,但显然如下代码所示它返回未定义,所以我想知道有没有办法可以将传递的字符串转换为常量键,以便返回与键对应的正确常量值被通过了?谢谢

myApp.constant('clients', {
    clientData: "clientDetails",
    clientList: "clients" });


getConstV : function(Key){
      //this one returns clientDetails
      console.log(clients.clientData);           

      //This one FAIL...returns undefined   
      console.log(clients.Key);            
    }

我如何调用 getConstE 如下:

   getConstV('clientDetails');

【问题讨论】:

  • 嗯...如果您尝试编写 console.log(clients[key]) 而不是 console.log(clients.key) 会怎样?
  • @superpuccio 接受您的答案(这是正确的)您必须将其发布为答案,您可以这样做吗?
  • 我尽量回答清楚,很高兴能帮到你!

标签: javascript angularjs associative-array


【解决方案1】:

您的问题不是 AngularJS 问题,而是 Javascript 问题:在 Javascript 中,您可以通过两种方式访问​​关联数组:一种是点符号 array.key,另一种是括号符号 array[key]。如果您使用点分符号,Javascript 会尝试访问关联数组中名称为 key 的属性。但是,在您的对象中,没有具有该名称的属性,您会获得undefined。相反,括号表示法让您决定如何访问关联数组(使用constantvariable)。回顾一下:这个符号

array["key"]

产生与

相同的结果
array.key

但如果您想要一个灵活的解决方案(使用变量),您必须以这种方式使用括号表示法

array[key]

key 显然是一个变量。

Difference between using bracket (`[]`) and dot (`.`) notation

【讨论】:

    【解决方案2】:

    您是否注入了clients 常量?

    angular.module('myAngularApp')
        .factory('MyService', function (clients) {
            ...
            function getConstV (Key){
                console.log(clients.clientData);   
            }  
            ...              
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 2015-12-05
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2015-06-26
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多