在 nativescript-pager 中动态添加项目会破坏视图顺序

Posted

技术标签:

【中文标题】在 nativescript-pager 中动态添加项目会破坏视图顺序【英文标题】:Adding items dynamically in nativescript-pager screws up view order 【发布时间】:2020-02-15 11:28:29 【问题描述】:

我在寻呼机中使用分页,但这似乎破坏了整个寻呼机。 我用一些简单的数据做了一个测试。 预期的行为是从 1 开始计数到 ​​7,然后从 1 重新开始计数到 ​​7。 像这样:1,2,3,4,5,6,7,1,2,3,4,5,6,7

但实际发生的情况如下:1,2,3,4,5,6,6,7,1,2,4,5,6,1,5,5,4

模板内

        <Pager   @selectedIndexChange="onPagerChangedPage($event)" @loaded="onPagerLoaded($event)" for="item in profiles">
            <v-template>
              <StackLayout   class="profile-wrapper">
                <Label :text="item.first_name"/>
              </StackLayout>
            </v-template>
          </Pager>

数据

  data() 
    return 
          profiles: new ObservableArray( [  first_name: "1.hello", first_name: "2.brah", first_name: "3.krakaka",first_name: "4.Blalala",first_name: "5.Shatash",first_name: "6.Dreaum",first_name: "7.Breauhjm" ]),
      
  

方法

    onPagerChangedPage(event) 
      let profileCount = event + 1;
      if (this.profiles.length === profileCount) 
        this.getProfiles();
      
    ,
    getProfiles() 
      let newProfiles = [first_name: "1.hello",first_name: "2.brah", first_name: "3.krakaka",first_name: "4.Blalala",first_name: "5.Shatash",first_name: "6.Dreaum",first_name: "7.Breauhjm"];
      newProfiles.forEach(profile => 
        this.profiles.push(profile);
      );
    ,

编辑:尝试了一些新方法

    onLoadMoreItems(event) 
      let profileCount = this.profiles.length + 1;
      this.profiles.push(first_name: profileCount + ": random");
    ,
    onPagerChangedPage(event) 
      console.log("Current page name:" + this.profiles.getItem(event).first_name);
      let profileCount = event + 1;
      console.log(profileCount + "|" + this.profiles.length);
    ,

【问题讨论】:

【参考方案1】:

这可以通过使用 ObservableArray 来解决,因为它会发出数据更改事件,所以在内部可以更好地处理它,如果您想知道它具有与常规数组大致相同数量的方法 ....import ObservableArray from 'tns-core-modules/data/observable-array'

【讨论】:

首先感谢您回答我的问题。我尝试使用 ObservableArray 但我仍然得到相同的数字序列。您还有其他解决此问题的想法吗? 您使用的是哪个版本,repo 中也有类似的示例 你能把我链接到演示吗?我刚刚浏览了演示,但我似乎找不到他也在动态删除/添加项目的演示。 Here 我们绑定到loadMoreItems 事件 我似乎仍然无法正常工作。当我通过 selectedIndex 在数组中记录一个项目时,我得到了正确的名称,但寻呼机不包含该项目。 IE: "console.log("当前页面名称:" + this.profiles.getItem(event).first_name);"正确,但页面显示错误的 first_name。

以上是关于在 nativescript-pager 中动态添加项目会破坏视图顺序的主要内容,如果未能解决你的问题,请参考以下文章

Inapp Purchase:我们可以在itunes connect中动态添加一堆产品吗?

如何在 ASP.NET Core MVC 中添加分页,在 AJAX 调用中动态创建的表上

winform DataGridView 动态添加一列控件(自定义控件)

我可以动态添加一列到 slickgrid 吗?

jquery如何动态的添加一条html代码

WPF 动态添加带样式按钮