反应性地更新数组值
Update array Values Reactively
我有一个 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 上使用地图函数,但这不起作用。
欢迎任何帮助。谢谢
你试过这个吗:
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);
我真的不知道 angular 方法,但我认为如果 "this.objects" 是一个 ReactiveVar,你可以用 Tracker.autorun 包装你的地图执行,比如:
Tracker.autorun(() => {
this.resultArray = this.objects.map((item) => item.value);
});
我有一个 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 上使用地图函数,但这不起作用。
欢迎任何帮助。谢谢
你试过这个吗:
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);
我真的不知道 angular 方法,但我认为如果 "this.objects" 是一个 ReactiveVar,你可以用 Tracker.autorun 包装你的地图执行,比如:
Tracker.autorun(() => {
this.resultArray = this.objects.map((item) => item.value);
});