【问题标题】:Update array Values Reactively响应式更新数组值
【发布时间】:2016-11-15 23:49:42
【问题描述】:

我有一个 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 上使用 map 函数,但这不起作用。

欢迎任何帮助。谢谢

【问题讨论】:

    标签: angular meteor angular-meteor


    【解决方案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);    
        });
    

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多