【发布时间】:2016-02-27 10:06:07
【问题描述】:
我在 AngularJS 1 中,我想通过引用以元素值作为键的对象的值来显示我正在显示的元素的值。
目前我的实现效率很低,因为我有两个版本的相同值,一个作为对象数组,另一个作为对象(我用它来创建select 元素)。
例子:
timezonesArrOfObj = {
{ value : "Europe/Dublin", string : "(GMT) Dublin"},
{ value : "Europe/Lisbon", string : "(GMT) Lisbon"},
{ value : "Europe/London", string : "(GMT) London"}
}
timezonesObj = {
"Europe/Dublin" : "(GMT) Dublin",
"Europe/Lisbon" : "(GMT) Lisbon",
"Europe/London" : "(GMT) London"
}
目前,当我想显示该值时,我会这样做:
{{ timezonesObj[element.Timezone] }}
但是,重用timezonesArrOfObj 会更有效,但是我如何将正确的键与element.Timezone 的值相关联以显示正确的timezonesArrOfObj[ (index of key == element.Timezone) ].string?
顺便说一句,我需要timezonesArrOfObj,因为我想确定select 元素中列出的时区的顺序。
// 编辑
合并来自 xSaber 的评论和来自 Vaibhav 的回复,我最终这样做了:
.filter('getObjString', function() {
return function(args){
return args.obj[_.findIndex(args.obj, { value : args.val })].string
};
});
和html:
{{ { val : element.timezone, obj : timezonesArrOfObj } | getObjString }}
【问题讨论】:
标签: javascript arrays angularjs angular-material