我有一个循环的FirebaseListObservable,并且列表中的单个对象通过,如何获取通过的对象的键值?
对象的单个实例在选中时传递给函数,我需要获取密钥,但是如果我使用value.key或value.uid则未定义。
这是通过firebase数组执行的循环
open var Name: UILabel!
open func ynCategoryButtonClicked(_ sender: UITapGestureRecognizer) {
guard let text = Name.text else { return }
ynSearch.appendSearchHistories(value: text)
self.delegate?.ynCategoryButtonClicked(text: text)
}
>
点击这是功能
<sebm-google-map-marker
*ngFor="let m of markers | async"
(markerClick)="test(m)"
[latitude]="m.lat"
[longitude]="m.lng"
我想通过
获取项目的密钥this is the data being passed and want to get the key for the object
答案 0 :(得分:0)
您需要获取密钥,然后使用密钥循环访问集合:
首先创建一个键数组(可能在订阅块中执行此操作,因为它看起来像代码中的observable):
markerKeys = Object.keys(markers);
然后使用键循环:
<sebm-google-map-marker
*ngFor="let mKey of markerKeys"
(markerClick)="test(markers[mKey])"
[latitude]="markers[mKey].lat"
[longitude]="markers[mKey].lng"
答案 1 :(得分:0)
我相信Eeks33是对的,但由于标记不是集合,而是集合的Observable,你可以将它视为集合。
试
const addKeys = (collection => Object.keys(collection)
.map(key => collection[key] = key));
const markersWithKeys = markers.map(addKeys);
然后您应该可以在markersWithKeys
上遍历模板,其中每个项目现在都有一个关键属性。
<sebm-google-map-marker
*ngFor="let m of markersWithKeys | async"
(markerClick)="test(m)"
[latitude]="m.lat"
[longitude]="m.lng"
在您的点击处理程序中,您应该能够像这样访问密钥:
test(m) {
console.log(m.key);
}