Javascript 仅当某个属性发生更改时才订阅可观察的

Javascript 仅当某个属性发生更改时才订阅可观察的,javascript,angularjs,rxjs,Javascript,Angularjs,Rxjs,我需要rxjs的subscribe方法限制某些属性更改。我试着用distinctUntilChanged来做这件事,但我觉得我遗漏了一些东西 我只想在属性data.members[]更改时订阅fire this.myService.loadData(this.data.id) .distinctUntilChanged() .subscribe(data => { this.data = data; console.log("data changed", data)

我需要rxjs的
subscribe
方法限制某些属性更改。我试着用
distinctUntilChanged
来做这件事,但我觉得我遗漏了一些东西

我只想在属性
data.members[]
更改时订阅fire

this.myService.loadData(this.data.id)
  .distinctUntilChanged()
  .subscribe(data => {
    this.data = data;
    console.log("data changed", data);
});
如何对不同的更改做出反应?

查看,我发现您应该能够通过
Rx.Observable.prototype.distinctUntilChanged([keySelector],[comparer])
实现所需的功能,并使用
keySelector
选择要检测其更改的属性,和
比较器
参数来检测相等性

Rxjs v5具有和具有类似的功能

您可以查看测试,例如用法:[

我想从这一点上,你应该能够设置一些东西,如果没有,就把你尝试过的东西发回

.distinctUntilChanged((data)=>{return data.members;})
有效!如何检查多个数组?(成员、关系、子数组)


我希望对阵列内的更改(添加/删除的项目)作出反应

使用
angular.equals
进行深度比较

this.myService.loadData(this.data.id)
  .distinctUntilChanged((data) => (data.members), (a,b) => (angular.equals(a,b))
  .subscribe(data => {
    this.data = data;
    console.log("data changed", data);
});
有关
distinctUntilChanged
的更多信息,请参阅


有关
angular.equals
的详细信息,请参阅。

您是否希望对
数据的不同更改做出反应。成员
属性参考值?或对
数据所引用的数组内容的不同更改。成员
属性?我希望对数组内的更改做出反应(添加/删除的项目).distinctUntilChanged((data)=>{return data.members;})
有效!如何检查多个数组?(成员、关系、子数组)?