反应性地更新数组值

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);    
    });