NativeScript Vue中的重新排序列表

Posted

技术标签:

【中文标题】NativeScript Vue中的重新排序列表【英文标题】:ReOrder List in NativeScript Vue 【发布时间】:2019-08-02 05:27:33 【问题描述】:

我是 nativescript-vue 的新手,但我有一个应用程序可以显示从 api 获取的漂亮列表。

现在我希望能够让用户重新排序。

文档似乎陈旧,所以我将发布这个至少显示但无法重新排序的列表示例:

 <template>
 <Page class="page">
    <ActionBar title="ListView with Avatars/Thumbnails" class="action-bar" />
    <ScrollView>
        <ListView for="item in items" class="list-group" @itemTap="onItemTap">
            <v-template>
                <GridLayout class="list-group-item" rows="*" columns="auto, *">
                    <Image row="0" col="0" :src="item.src" class="thumb img-circle" />
                    <Label row="0" col="1" :text="item.text" />
                </GridLayout>
            </v-template>
        </ListView>
    </ScrollView>
</Page>

<script>
export default 
  data() 
    return 
      items: [
         text: "Bulbasaur", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png" ,
         text: "Charmander", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/4.png" ,
         text: "Charizard", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/6.png" ,
         text: "Squirtle", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/7.png" ,
         text: "Wartortle", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/8.png" ,
         text: "Blastoise", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/9.png" ,
         text: "Caterpie", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10.png" ,
         text: "Weedle", src: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/13.png" ,
      ]
   
  ,
  methods: 
    onItemTap: function(event) 
      console.log("You tapped: " + this.$data.items[event.index].text);
    
  ,
;
</script>

文档建议它应该很简单:Item Reorder。但我没有让这些碎片组合在一起。所以也许我们可以在这里得到一些简洁的代码?

【问题讨论】:

【参考方案1】:

首先,您需要使用&lt;RadListView&gt; 组件而不是&lt;ListView&gt;。然后,您只需添加属性itemReorder="true"。像这样:

<RadListView for="item in items" class="list-group" @itemTap="onItemTap"
            itemReorder="true">

您可以在 this playground 中找到您的示例。

此外,RadListView 的 Vue 文档位于 here。这些 Vue 文档并不完整,但是一旦你“翻译”到 Vue,一切都应该可以工作。

【讨论】:

谢谢,蒂亚戈。是的,RadLustView 是我想要的,但我尝试的一切都引发了错误。操场示例给出了同样的错误: 您是否在手机中测试了 Playground 示例?它在这里工作。不是&lt;lv:Radlistview&gt;,而是&lt;RadListView&gt; 是的,我在手机上查看了您的评论。当我点击链接时,它打开了预览并抛出了那个错误(刚刚时间戳)。 但是,当我在笔记本电脑上查看操场并用 iPhone 扫描二维码时,它工作了。我还成功地将其重新创建为一个新项目,直到我尝试按照文档中的说明进行操作。让我再摆弄一下。 我无法在干净的应用程序中成功安装和使用 RadListView。 (是我在 Windows 上吗?)。但是我在这里下载了操场,在其中构建了我的代码,并且成功了!谢谢,蒂亚戈。非常感谢您的耐心。

以上是关于NativeScript Vue中的重新排序列表的主要内容,如果未能解决你的问题,请参考以下文章

NativeScript-Vue 中的音频播放器

Nativescript Vue(移动应用程序) - 如何将模式列表视图中的选定项目数据传递回主应用程序?

水平 StackLayout 中的 ListView - Nativescript Vue

无法使用 Nativescript-Vue GridLayout 显示项目列表

重新启用按需加载 [NativeScript Vue]

如何更改 nativescript-vue 中列表项的颜色/背景颜色?