0

我有一个正在测试 RadListView 的 Vanilla Nativescript 应用程序;从 JS 填充项目。

一旦我设置了 ObservableArray 的值,应用程序就会崩溃。我试图设置值 onload 以及 on tap。在底部标签上的此示例选项卡中;目前顶部的标签将显示设置值,因此我知道该对象确实存在;但是当试图将数据绑定到列表视图时,事情就出错了。

以下是复制此问题的基本代码;如果您取消注释该行:

pageData.set("items", items);

任何方向将不胜感激。

主页.XML

<Page class="page"
    navigatingTo="onNavigatingTo"  
    loaded="pageLoaded" 
    xmlns="http://schemas.nativescript.org/tns.xsd"
    xmlns:lv="nativescript-ui-listview"
>

    <ActionBar class="action-bar">
        <Label class="action-bar-title" text="Home"></Label>
    </ActionBar>

    <StackLayout>
        <!-- Add your page content here -->

        <Label  text="{{ toptext }}" textAlignment="center" color="#88f" fontSize="15" fontWeight="bold"/>


        <lv:RadListView height="350" items="{{ items }}" >
        <lv:RadListView.itemTemplate>
            <StackLayout orientation="vertical">
                <Label fontSize="20" text="{{ itemName }}"/>
                <Label fontSize="14" text="{{ itemDescription }}"/>
            </StackLayout>
        </lv:RadListView.itemTemplate>
    </lv:RadListView>

        <Label  text="BOTTOM LABEL" textAlignment="center" color="#f88" fontSize="33" fontWeight="bold" onTap="fillListview"/>

    </StackLayout>
</Page>

主页.JS

const HomeViewModel = require("./home-view-model");

var Observable = require("data/observable").Observable;
var ObservableArray = require("data/observable-array").ObservableArray;

var items = new ObservableArray();

var pageData = new Observable();



function onNavigatingTo(args) {
    const page = args.object;
    page.bindingContext = new HomeViewModel();

}

exports.onNavigatingTo = onNavigatingTo;


exports.pageLoaded = function(args) {
    page = args.object;
    page.bindingContext = pageData;

    items.push(
        {
            itemName: "$USD / ZAR",
            itemDescription: "13.50",
            itemDate: "3 Jul 2019",
            itemImage: "~/images/arcade-fire.png"
        },
        {
            itemName: "$USD / ZAR",
            itemDescription: "18.00",
            itemDate: "17 Aug 2019",
            itemImage: "~/images/bon-iver.png"
        }
    )



};




exports.fillListview = function(args) {

    pageData.set("toptext", items);
//  pageData.set("items", items);

}

4

1 回答 1

0

我试图在操场项目中重现您的问题,但一切正常,您是否在控制台中收到有关您的问题的一些错误?

是我尝试您的代码的项目

于 2019-12-08T14:23:13.620 回答