Javascript Aurelia中的数组订阅

Javascript Aurelia中的数组订阅,javascript,aurelia,Javascript,Aurelia,假设我有一个元素数组,除了在我的应用程序中显示列表外,我还想使用HttpClient将列表同步到服务器。如何观察阵列的变化?我试过: @inject(observer定位器) 导出类视图模型{ 建造商(obsLoc){ this.list=[]; obsLoc.getObserver(此“列表”); .subscribe(li=>console.log(li)); } } 但是我没有收到错误或日志消息。getObserver返回一个属性观察器,当ViewModel类实例的列表属性更改时,该观察

假设我有一个元素数组,除了在我的应用程序中显示列表外,我还想使用
HttpClient
将列表同步到服务器。如何观察阵列的变化?我试过:

@inject(observer定位器)
导出类视图模型{
建造商(obsLoc){
this.list=[];
obsLoc.getObserver(此“列表”);
.subscribe(li=>console.log(li));
}
}

但是我没有收到错误或日志消息。

getObserver
返回一个属性观察器,当
ViewModel
类实例的
列表
属性更改时,该观察器将通知您。只有将新值分配给
列表
属性,即
This.list=[1,2,3]
时,才会发生这种情况。如果没有为
列表
属性指定新值,而是通过
推送
弹出
拼接
等方式对属性值进行变异,则需要使用数组观察者。使用
ObserverLocator
getArrayObserver
方法-它包含一个参数,即您要观察的阵列:

从'aurelia binding'导入{ObserverLocator};//或者来自“aurelia框架”
@注入(观察者定位器)
导出类视图模型{
建造商(obsLoc){
this.list=[];
obsLoc.getArrayObserver(this.list);
.subscribe(拼接=>console.log(拼接));
}
}
2015年10月更新 ObserverLocator是Aurelia的内部“裸机”API。现在可以使用绑定引擎的公共API:

从“aurelia binding”导入{BindingEngine};//或者来自“aurelia框架”
@注入(绑定引擎)
导出类视图模型{
构造函数(绑定引擎){
this.list=[];//将支持任何数组、映射和集合
//订阅
让订阅=bindingEngine.collectionObserver(this.list)
.subscribe(拼接=>console.log(拼接));
//请务必稍后取消订阅****
subscription.dispose();
}
}

观察list.length是否足够?看到变化发生不是更容易吗?这里的语法有变化吗?我们从来没有添加过类似“aurelia框架”中的import{observe}这样简单的东西;观察(任何事情,回调)?这是否仍然有效(10月更新),因为我似乎无法让collectionObserver回调正常工作,但您之前的示例工作正常?应该有效-如果您想打开一个新问题,并提供有关您的问题的一些细节,我可以进行研究。啊,很抱歉发现了我的问题。我在构造函数中调用dispose(与您发布的代码相同)。哼!很抱歉