首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Nativescript列表视图工作

如何使Nativescript列表视图工作
EN

Stack Overflow用户
提问于 2017-10-23 22:17:43
回答 2查看 273关注 0票数 0

我正在做一个带有nativescript和角2的应用程序。我尝试使用nativescript列表视图组件,但我无法使它工作,当我尝试这个应用程序时,我得到的总是“对象对象”。

这是我的视图代码:

代码语言:javascript
复制
                               <grid-layout columns="*" rows="*">
                               <ListView [items]="itemsd" class="listview" #LISTV>
                                   <ListView.itemTemplate>
                                        <grid-layout columns="50, *" rows="*" class="item item-avatar">
                                            <image src="{{ '~/images/' + img }}" col="0" ></image>
                                            <stack-layout col="1">
                                                <label text="{{ artist }}" class="h2" col="1"></label>
                                                <label text="{{ title }}" class="p" col="1"></label>
                                            </stack-layout>
                                        </grid-layout>
                                   </ListView.itemTemplate>
                               </ListView>
                           </grid-layout>

这里是我的ts代码:

代码语言:javascript
复制
    ngOnInit(): void {
    this.fakeListItems = [{
        "img":"ANDY.jpg",
        "artist":"ANDY",
        "title":"A User"
    }]
    this.itemsd = new ObservableArray(this.fakeListItems);
}

我尽了一切努力使这个列表视图工作,但文档并不是很好,并且有许多版本来自不同的telerik网站。有办法让这件事成功吗?怎么做呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-24 07:14:39

可能要归咎于语法的混合。尝试将items="itemsd“更改为items=”{itemsd}“。

下面是我的一个演示应用程序的2.3NS代码,它运行得很好:

代码语言:javascript
复制
  <ListView items="{{ peripherals }}" itemTap="{{ onPeripheralTap }}" separatorColor="#ffffff">
      <ListView.itemTemplate>
          <StackLayout orientation="horizontal">
              <StackLayout cssClass="padded-label-stack" width="60%">
                <Label horizontalAlignment="left" text="{{ advertisement }}"/>
                <Label horizontalAlignment="left" text="{{ number1 + ' coins for €' + number2 }}"/>
              </StackLayout>
              <StackLayout cssClass="padded-label-stack" width="40%">
                <Label horizontalAlignment="right" text="{{ 'Time: ' + timestamp }}"/>
                <Label horizontalAlignment="right" text="{{ distance + 'm away' }}"/>
              </StackLayout>
          </StackLayout>
      </ListView.itemTemplate>
  </ListView>

您的ts-代码似乎与我的没有明显的不同,与之不同的是,您并没有主动地使您的对象可观察到。您可以很好地初始化数组。

代码语言:javascript
复制
observablePeripheralArray = new observableArray.ObservableArray();
peripheralArray = new Array();
peripherals = this.observablePeripheralArray;

var that = this;
var onDiscovered = function (result) {
  let extended = new ExtendedPeripheral(result);
  var obsp = new Observable(extended);
  ...
  that.observablePeripheralArray.splice(i, 0, obsp);

一方面:考虑使用本地脚本插件获取Visual代码,这样您就可以运行调试器来查看您的项目到底是什么。或者试试JSON.stringify(this.itemsd),看看你的结构是否正确。如果对象总是包含相同的字段,则为它们创建一个类。

票数 1
EN

Stack Overflow用户

发布于 2017-10-25 10:28:47

我认为你只是搞错了语法,{{ }}应该是[ ]

代码语言:javascript
复制
<grid-layout columns="*" rows="*">
     <ListView [items]="itemsd" class="listview" #LISTV>
          <ListView.itemTemplate>
                <grid-layout columns="50, *" rows="*" class="item item-avatar">
                        <image [src]="'~/images/'+img" col="0" ></image>
                              <stack-layout col="1">
                                  <label [text]="artist" class="h2" col="1"></label>
                                  <label [text]="title" class="p" col="1"></label>
                               </stack-layout>
                 </grid-layout>
            </ListView.itemTemplate>
       </ListView>
</grid-layout>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46899366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档