将 RadDataForm 嵌入 RadListView/ListView
Embed RadDataForm inside RadListView/ListView
我需要使用 nativescript-pro-ui 中的 Stepper 组件,但它不是独立组件,但需要由 RadDataForm 包装。
我想做的是遍历从 REST api 返回的可用菜单列表,供用户订购。
我在这里创建了一个游乐场:https://play.nativescript.org/?template=play-ng&id=vwvuXt
如您所见,我将 RadDataForm 的 [source] 绑定到 ListView 中的单个项目。但是,这样RadDataForm不显示。
如果我将其更改为使用 *ngFor,它就可以工作。那么,与RadDataForm的绑定有什么问题,有没有办法实现呢?
使用*ngFor的模板代码是这样的:
<RadDataForm *ngFor="let item of menus" tkExampleTitle tkToggleNavButton [source]="item">
<TKEntityProperty tkDataFormProperty name="name" [isReadOnly]="isReadOnly" displayName="Name" index="0"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="price" [isReadOnly]="isReadOnly" displayName="Price" index="1"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="image" [isReadOnly]="isReadOnly" displayName="Image" index="2"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="quantity" displayName="Quantity" index="3">
<TKPropertyEditor tkEntityPropertyEditor type="Stepper"></TKPropertyEditor>
</TKEntityProperty>
</RadDataForm>
记住我的朋友,你需要使用 NativeScript 布局来避免在所有平台上的错误行为。因此,要解决您的示例的问题,代码如下:
<ListView [items]="menus">
<ng-template let-item="item">
<StackLayout>
<RadDataForm #myDish [source]="item" tkExampleTitle tkToggleNavButton>
<TKEntityProperty tkDataFormProperty name="name" displayName="Dish Name" index="0">
<TKPropertyEditor tkEntityPropertyEditor type="Text">
</TKPropertyEditor>
</TKEntityProperty>
</RadDataForm>
</StackLayout>
</ng-template>
</ListView>
如您所见,我们正在为列表的每个字段使用 StackLayout。此外,您可以使用 RadListView 组件,您可以找到更多高级功能,例如无限滚动、下拉刷新等。
我需要使用 nativescript-pro-ui 中的 Stepper 组件,但它不是独立组件,但需要由 RadDataForm 包装。 我想做的是遍历从 REST api 返回的可用菜单列表,供用户订购。
我在这里创建了一个游乐场:https://play.nativescript.org/?template=play-ng&id=vwvuXt
如您所见,我将 RadDataForm 的 [source] 绑定到 ListView 中的单个项目。但是,这样RadDataForm不显示。
如果我将其更改为使用 *ngFor,它就可以工作。那么,与RadDataForm的绑定有什么问题,有没有办法实现呢?
使用*ngFor的模板代码是这样的:
<RadDataForm *ngFor="let item of menus" tkExampleTitle tkToggleNavButton [source]="item">
<TKEntityProperty tkDataFormProperty name="name" [isReadOnly]="isReadOnly" displayName="Name" index="0"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="price" [isReadOnly]="isReadOnly" displayName="Price" index="1"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="image" [isReadOnly]="isReadOnly" displayName="Image" index="2"></TKEntityProperty>
<TKEntityProperty tkDataFormProperty name="quantity" displayName="Quantity" index="3">
<TKPropertyEditor tkEntityPropertyEditor type="Stepper"></TKPropertyEditor>
</TKEntityProperty>
</RadDataForm>
记住我的朋友,你需要使用 NativeScript 布局来避免在所有平台上的错误行为。因此,要解决您的示例的问题,代码如下:
<ListView [items]="menus">
<ng-template let-item="item">
<StackLayout>
<RadDataForm #myDish [source]="item" tkExampleTitle tkToggleNavButton>
<TKEntityProperty tkDataFormProperty name="name" displayName="Dish Name" index="0">
<TKPropertyEditor tkEntityPropertyEditor type="Text">
</TKPropertyEditor>
</TKEntityProperty>
</RadDataForm>
</StackLayout>
</ng-template>
</ListView>
如您所见,我们正在为列表的每个字段使用 StackLayout。此外,您可以使用 RadListView 组件,您可以找到更多高级功能,例如无限滚动、下拉刷新等。