0

我有一个使用 Telerik-UI 的 NativeScript/Angular2 应用程序,当我尝试在 RadListView 中使用 ListViewStaggeredLayout 指令显示图像时,我得到一个空白页。使用相同的代码来显示文本工作正常,即 2 列和交错布局。使用 ListViewGridLayout 显示图像也可以。我看过旧的 Telerik 文档,显示图像可以/可以,但我不知道要设置什么。HTML 代码如下。谢谢。

<RadListView [items]="pictures">
    <template tkListItemTemplate let-item="item">
        <GridLayout>
            <Image col="0" src="{{ 'res://listview/layouts/' + item.photo + '.jpg' }}" stretch="aspectFill" loadMode="async"></Image>
            <!-- <Label col="0" [text]="item.title" textWrap="true"></Label> -->
        </GridLayout>
    </template>
    <ListViewStaggeredLayout tkListViewLayout scrollDirection="Vertical" spanCount="2" itemWidth="180"></ListViewStaggeredLayout>
    <!-- <ListViewGridLayout tkListViewLayout scrollDirection="Vertical" itemHeight="200" spanCount="2"></ListViewGridLayout> -->
</RadListView>
4

1 回答 1

1

看起来您使用了非 Angular 2 绑定语法( {{ ... }})src作为Image. tkListItemTemplate只需将其更改为类似的东西[src]="'res://listview/layouts/' + item.photo + '.jpg'",一切都应该正常工作。或者甚至更好地删除硬编码res://listview/layouts/并将'.jpg'它们添加到“数据项对象的 .photo 属性”,在绑定中使用这样的硬编码字符串不是一个好方法。

我已经使用此模板对此进行了测试,并且所有工作都按预期进行:

<GridLayout>
    <RadListView [items]="staggeredItems">
        <template tkListItemTemplate let-item="item">
            <GridLayout class="listItemTemplateGrid">
                <Image [src]="item.image" stretch="aspectFill"></Image>
                <GridLayout verticalAlignment="bottom">
                    <StackLayout class="labelsStackLayout">
                        <Label [text]="item.title"></Label>
                        <Label [text]="item.description"></Label>
                    </StackLayout>
                </GridLayout>
            </GridLayout>
        </template>

        <ListViewStaggeredLayout tkListViewLayout scrollDirection="Vertical" spanCount="3"></ListViewStaggeredLayout>
    </RadListView>
</GridLayout>

这个staggeredItems类的有:

export class DataItem {
    constructor(public description?: string, public title?: string,  public image?: string) {
    }
}
于 2016-11-04T09:00:45.710 回答