【问题标题】:What is the right way to bind data with RadListView using Angular + Nativescript template?使用 Angular + Nativescript 模板将数据与 RadListView 绑定的正确方法是什么?
【发布时间】:2018-10-09 21:05:59
【问题描述】:

概述

我想在 nativescript 中创建下面的数据表

在互联网上进行了一些搜索后,我发现这可以使用RadListView 来完成。所以我找到了来自PlaygroundListView/getting-started

问题

我现在面临的问题是我的RadListView 没有绑定数据。

开发者工具快照:

控制台快照:

输出:

我的尝试

home.component.html

试过这段代码:

<page xmlns:lv="nativescript-ui-listview">
<ActionBar class="action-bar">
    <NavigationButton ios:visibility="collapsed" icon="res://menu" (tap)="onDrawerButtonTap()"></NavigationButton>
    <ActionItem icon="res://navigation/menu" android:visibility="collapsed" (tap)="onDrawerButtonTap()"
        ios.position="left">
    </ActionItem>
    <Label class="action-bar-title" text="Home"></Label>
</ActionBar>
<lv:RadListView [items]="inbox">
        <ng-template tkListItemTemplate  let-item="item" let-i="index"> 
        <StackLayout orientation="horizontal">
            <Label fontSize="20" [text]="item._Transactions" />

            <Label fontSize="14" [text]="item._PendingYourAction" />

            <Label fontSize="14" [text]="item._PendingNextLevelAction" />

            <Label fontSize="14" [text]="item._CompletedTransactions" />
        </StackLayout>
</ng-template>
</lv:RadListView>

试过这段代码:

<lv:RadListView [items]="inbox">
    <lv:RadListView.itemTemplate>
        <StackLayout orientation="horizontal">
            <Label fontSize="20" [text]="inbox._Transactions" />

            <Label fontSize="14" [text]="inbox._PendingYourAction" />

            <Label fontSize="14" [text]="inbox._PendingNextLevelAction" />

            <Label fontSize="14" [text]="inbox._CompletedTransactions" />
        </StackLayout>
    </lv:RadListView.itemTemplate>
</lv:RadListView>

home.component.ts

import { Component, OnInit } from "@angular/core";
import { RadSideDrawer } from "nativescript-ui-sidedrawer";
import * as app from "tns-core-modules/application";
import { ObservableArray } from "tns-core-modules/data/observable-array/observable-array";

@Component({
    selector: "Home",
    moduleId: module.id,
    templateUrl: "./home.component.html"
})
export class HomeComponent implements OnInit {
    inbox: ObservableArray<Inbox>;
    constructor() {
        const sideDrawer = <RadSideDrawer>app.getRootView();
        sideDrawer.gesturesEnabled = true;
    }

    ngOnInit(): void {
        this.inbox = new ObservableArray<Inbox>();
        this.inbox.push(new Inbox("Purchase Request",0,0,"View"));
        this.inbox.push(new Inbox("Purchase Order",0,0,"View"));
        this.inbox.push(new Inbox("Receipt",0,0,"View"));
        this.inbox.push(new Inbox("Payment Advice",0,0,"View"));
        console.log(this.inbox);
    }

    onDrawerButtonTap(): void {
        const sideDrawer = <RadSideDrawer>app.getRootView();
        sideDrawer.showDrawer();
    }
}

export class Inbox {
    public _Transactions: string;
    public _PendingYourAction: number;
    public _PendingNextLevelAction: number;
    public _CompletedTransactions: string;

    constructor(Transactions: string, PendingYourAction: number, PendingNextLevelAction: number, CompletedTransactions: string) {
        this._Transactions = Transactions;
        this._PendingYourAction = PendingYourAction;
        this._PendingNextLevelAction = PendingNextLevelAction;
        this._CompletedTransactions = CompletedTransactions;
    }
}

问题

请帮助我解决我在代码中做错的事情。使用 Angular 将数据与 RadListView 绑定的正确方法是什么。我在 nativescript 中使用 angular 6。

【问题讨论】:

    标签: angular nativescript angular2-nativescript nativescript-angular


    【解决方案1】:

    我今天早上尝试通过以下建议为其他人解决同样的问题

    你在哪个平台(ios/android)测试这个? ios 为列表视图或其父组件提供高度和宽度非常重要。您可以尝试其他一些方法来进一步调试

    1. 在 RadListView 的(加载)方法中将数据推送到收件箱。

    2. 尝试像这样在加载时分配列表视图

      onListLoaded(args) {this.listView = args.object;}

    推送完所有收件箱数据后,通过this.listview.refresh(); 刷新列表视图。

    1. 先有一个activityIndi​​cator,然后隐藏列表。获得报告后隐藏指示器并使丢失可见。

    2. 将数据推送到临时数组,一旦推送所有项目,将该临时数组分配给报告。

      _tempInbox.push(new Inbox("采购请求",0,0,"View")); this._inbox = _tempInbox;

    【讨论】:

      【解决方案2】:

      我认为您对用于 Angular 和 Core 的语法感到困惑。我们在 Angular 中不使用 &lt;Page&gt; 元素或 xmlns,它们被指定用于核心开发。

      对于 Angular,您必须从 nativescript-ui-sidedrawer/angular 导入 NativeScriptUISideDrawerModule。然后只需使用&lt;RadListView ...&gt; 标签。

      您可以简单地创建一个新的 Playground 并从列表中拖动 RadListView 组件,它将创建一个漂亮而简单的工作示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 1970-01-01
        相关资源
        最近更新 更多