Активно обновлять значения массива
У меня есть проект angular2-meteor, у меня есть коллекция этого объекта:
{ name:"name1", value:4 }
и я хочу массив значений свойства, как:
[1, 2, 3, 4]
и я хочу, чтобы изменения, внесенные в коллекцию, реагировали на мой массив. Например: если я вставляю новый документ в свою коллекцию, я хочу новый элемент в моем массиве значений. На моей стороне клиента я подписываюсь на эту коллекцию следующим образом:
this.collectSub = MeteorObservable.subscribe('collection', options).subscribe(() => {
this.objects = MyCollection.find({}, {
sort: {
name: nameOrder
}
}).zone();
});
Я пытаюсь использовать функцию карты над this.object, но это не работает.
Любая помощь приветствуется. Спасибо
1 ответ
Вы пробовали это:
this.collectSub = MeteorObservable.subscribe('collection', options).subscribe(() => {
this.array = MyCollection.find({}, {
sort: {
name: nameOrder
}
}).map((item) => item.value).zone();
});
??
если вы не хотите использовать карту на курсоре, вы можете использовать карту следующим образом:
let collectionMock = [{name:"name1", value:1},{name:"name2", value:2},{name:"name3", value:3},{name:"name1", value:4}];
let result = collectionMock.map((item) => item.value);
Я действительно не знаю угловой путь, но я думаю, что если this.objects является ReactiveVar, вы можете обернуть выполнение вашей карты с помощью Tracker.autorun, например:
Tracker.autorun(() => {
this.resultArray = this.objects.map((item) => item.value);
});