首页 文章

Nativescript Angular2:RadListView绑定

提问于
浏览
1

我试图将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 回答

  • 0

    将HTML更改为

    <RadListView  [items]="weather" >
            <template tkListItemTemplate let-item="item">
                <StackLayout class="itemStackLayout" >
                    <Label class="titleLabel" [text]="item.value" textWrap="true" width="100%"></Label>
                </StackLayout>
            </template>
     </RadListView>
    

    提示:似乎不需要stringwrapper . 如果它只是一个字符串数组,您可以使用下面的代码

    <Label class="titleLabel" [text]="item" textWrap="true" width="100%"></Label>
    

相关问题