Nativescript - onItemLoading回调调用两次

时间:2017-06-25 13:37:49

标签: nativescript

有一个带有ListView的简单NS / TS页面 - 该列表由ObservableArray驱动。

我在数组中添加1个条目,onItemLoading事件被称为2x。

这是我的XML

        <ListView items="{{ dataItems }}"
              itemLoading="{{ onItemLoading }}"
              itemTap="{{ onNoteTap }}"
              itemTemplateSelector="'note'">

        <ListView.itemTemplates>
            <template key="note">
              <StackLayout>
                    <Label id="label"/>
              </StackLayout>
            </template>

          </ListView.itemTemplates>
        </ListView>

这是我的模型类

export class NotesModel extends observable.Observable
{
    public _listItemArray: ObservableArray<NoteItem>;

    constructor()
    {
        super();

        this._listItemArray = new ObservableArray<NoteItem>();

        let item = new NoteItem();

        item.label = "test";

        this._listItemArray.push( item );
    }

    get dataItems(): ObservableArray<NoteItem>
    {
        return this._listItemArray;
    }

    onItemLoading( args: listviewModule.ItemEventData )
    {
        console.log( "onItemLoading =" + args.index + " " + args.view );
    }

    onNoteTap( args )
    {
    }
}

运行代码后,我得到:

JS:构造函数

JS:onItemLoading = 0 StackLayout(217)@file:///app/my-notes-page.xml:39:15;

JS:onItemLoading = 0 StackLayout(217)@file:///app/my-notes-page.xml:39:15;

1 个答案:

答案 0 :(得分:0)

这是您的xml文件

<ListView items="{{ dataItems }}"
    itemLoading="onItemLoading"
    itemTap="{{ onNoteTap }}"
    itemTemplateSelector="'note'">

<ListView.itemTemplates>
  <template key="note">
    <StackLayout>
          <Label id="label"/>
    </StackLayout>
  </template>

</ListView.itemTemplates>
</ListView>

这是您的 main.ts 文件代码,而不是型号ts

import { EventData } from 'data/observable';
import { Page } from 'ui/page';
import { HelloWorldModel } from './main-view-model';

// Event handler for Page "navigatingTo" event attached in main-page.xml
export function navigatingTo(args: EventData) {

    let page = <Page>args.object;

    page.bindingContext = new HelloWorldModel();
}
export function onItemLoading(args) {
    console.log('Calling here ');
}