我的AngularJS应用程序中有以下常量,并希望使用下面显示的函数访问其值。问题是我将密钥作为字符串传递但显然如下面的代码所示它返回undefined,所以我想知道是否有一种方法可以将传递给常量键的字符串转换为返回对应于键的正确常量值通过?感谢
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');
答案 0 :(得分:2)
您的问题不是AngularJS问题,而是Javascript问题:在Javascript中,您可以通过两种方式访问关联数组:一种是点分表示法array.key
,另一种是括号表示法array[key]
。如果使用带点的表示法,Javascript会尝试在关联数组中访问名为key
的属性。但是,在您的对象中,没有具有该名称的属性,您将获得undefined
。相反,括号表示法允许您决定如何访问关联数组(使用constant
或variable
)。回顾一下:这种表示法
array["key"]
产生与
相同的结果array.key
但如果您需要灵活的解决方案(使用变量),则必须使用括号表示法
array[key]
其中key
显然是变量。
Difference between using bracket (`[]`) and dot (`.`) notation
答案 1 :(得分:1)
你注射了clients
常数吗?
angular.module('myAngularApp')
.factory('MyService', function (clients) {
...
function getConstV (Key){
console.log(clients.clientData);
}
...
}
}