为什么带有Typescript的Nativescript中的List视图会带来错误self.parent.parent而不是对象?

时间:2016-10-04 11:24:32

标签: listview angular nativescript

  

更新:问题是缺乏对语法的理解。   以下问题是用一般语法编写的   在一个没有创建错误的示例中。见答案   解释

与此question类似,但我遵循给出的答案并有一个新问题。

  

由:undefined不是一个对象(评估   ' self.parent.parent.context.item.name&#39)

为什么它引用self.parent.parent?而不是parent.child?这是我的问题所在吗?

app.component.html

<TabView #tabview [selectedIndex]="tabindex" class="">

        <DockLayout *tabItem="{title: 'Tab1'}">
            <StackLayout dock='left'>
                <ListView [items]="items">
                    <template let-item="item">
                            <StackLayout>
                                <Label [text]='item.name' textWrap="true"> </Label>
                            </StackLayout>
                    </template>
                </ListView>
             </StackLayout>
        </DockLayout>


    </TabView>

app.component.ts

import { Component, OnInit } from "@angular/core";
import { Page } from "ui/page"
import { ListView } from "ui/list-view"
import { Item } from "../item";
import { ItemService } from "../../services/item.service";
import dockModule = require("ui/layouts/dock-layout");




@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  providers: [ItemService]
})
export class AppComponent implements OnInit{ 

  public items: Item[];

  constructor(private itemService: ItemService) { 

  };



  getItems(): void {
    this.itemService.getItems().then(items => this.items = items);
  }
  ngOnInit(): void {
    this.getItems();
  }


}

item.ts

export class Item {
  id: number;
  name: string;
}

item.service.ts

import { Injectable } from '@angular/core';

import { Item } from '../item';
import { ITEMS } from '../database/mock-items';

@Injectable()

export class ItemService {
    getItems(): Promise<Item[]> {
    return Promise.resolve(ITEMS);
  }
}

1 个答案:

答案 0 :(得分:0)

对于遇到此问题或类似问题的任何人。

最后,对于其他人来说,这可能是直观的,但我认为每个人都使用<template let-item="item">作为代码只是巧合。说实话,上面的代码可以正常工作,因为模板标签写得正确。但我遇到的问题是我试图用另一个关键字编写语法。 <template let-item="account">。与使用*ngFor "let account of accounts"相比,这将给出

  

不是对象

错误就像我上面提到的那样。在提出问题时,我在不知不觉中编辑以反映正确的语法。