我试图将Observable绑定到RadListView,而不使用任何页面属性,但似乎做了一些完全错误的事情 . 以下是代码的缩小版本 .
组件:
export class WeatherComponent implements OnInit {
public weather : ObservableArray<StringWrapper>;
constructor(private _weatherService : WeatherService) {
this.weather = new ObservableArray<StringWrapper>([]);
this.weather.push(<StringWrapper>{value:'Sunny'});
}
ngOnInit(): void {
this._weatherService.getDummyWeather().subscribe(
item => {
this.weather.push(item);
}
);
}
}
XML:
<RadListView [items]="weather">
<template tkListItemTemplate let-item="item">
<StackLayout orientation="vertical">
<Label [text]="item.value"></Label>
</StackLayout>
</template>
</RadListView>
简单的数据模型:
export interface StringWrapper {
value : string;
}
服务:
@Injectable()
export class WeatherService {
public getDummyWeather() : Observable<StringWrapper> {
return Observable.of(<StringWrapper>{value:'Rainy'});
}
}
该服务正在更新模型但视图未反映更改,这使我相信问题位于可观察的绑定中 .
任何帮助将深表感谢!
注:检查相关问题并且没有任何解决方案有帮助,即Nativescript RadListView not binding to source property解决方案导致生成错误 .
1 回答
将HTML更改为
提示:似乎不需要stringwrapper . 如果它只是一个字符串数组,您可以使用下面的代码