【问题标题】:NativeScript + Angular2 - SegmentedBar bindingNativeScript + Angular2 - SegmentedBar 绑定
【发布时间】:2016-07-07 11:25:09
【问题描述】:

我已经遇到这个错误好几个小时了。当我运行该应用程序时,IOS 模拟器只显示一个白页,似乎没有加载任何内容。我不知道出了什么问题。我想制作一个带有分段栏的页面。这是我的“menu.component.ts”文件代码:

import {Observable} from 'data/observable';
import {Component} from "@angular/core";

@Component({
  selector: "menu",
  templateUrl: "./components/menu/menu.html",
})

export class MenuComponent extends Observable {
  public selectedItem: string;
  public items: Array<any> = [
   { title: 'Home' },
   { title: 'G+'   },
   { title: 'Sync' }
  ];

  constructor() {
   super();
   this.selectedItem = `Selected: ${this.items[0].title}`;
}

public selectSegment(e: any) {
  this.set('selectedItem', `Selected: ${this.items[e.newIndex].title}`);
  }
}

还有我的“menu.html”文件:

<SegmentedBar items="{{items}}" selectedIndexChanged="{{selectSegment}}" ></SegmentedBar>
<Label text="{{selectedItem}}" ></Label>

【问题讨论】:

    标签: typescript angular nativescript


    【解决方案1】:

    以下代码来自http://www.nativescriptsnacks.com/snippets/2016/06/22/angular-segmentedbar.html 稍作改动。

    总体而言,您使用的是 NativeScript Core 绑定语法,而不是应该如下所示的 nativeScript+Angular-2 绑定模型。

    <SegmentedBar #tabs [items]="items" [selectedIndex]="selectSegment"></SegmentedBar>
    

    更多关于 NativeScript+Angular-2 中的数据绑定here

    // #tabs 是为您的组件提供 Id 的方式(等于 id="tabs")

    这是来自 nativescriptsnacks.com 的一个工作示例(对原始代码的一些小改动)

        import {Component, OnInit, OnDestroy, AfterViewInit, ViewChild, ElementRef} from '@angular/core';
    
        import {Page} from 'ui/page';
        import {SegmentedBar, SegmentedBarItem, SelectedIndexChangedEventData} from 'ui/segmented-bar';
    
        @Component({
            selector: 'tabs',
            template: '<SegmentedBar #tabs [items]="items" [selectedIndex]="selectedIndex"></SegmentedBar>'
        })
        export class TabsComponent implements OnInit, OnDestroy, AfterViewInit {
            selectedIndex: number;
            items: Array<any>;
    
            @ViewChild("tabs") tabs: ElementRef; // equal to getViewById() in NativeScript core
    
            constructor(private page: Page) {
                this.selectedIndex = 0;
                this.items = [{ title: 'First' }, { title: 'Second' }, { title: 'Third' }];
            }
            ngOnInit() {
    
            }
            ngAfterViewInit() {
                this.tabs.nativeElement.on(SegmentedBar.selectedIndexChangedEvent, (args: SelectedIndexChangedEventData) => {
                    switch (args.newIndex) {
                        case 0:
                            console.log('first selected')
                            break;
                        case 1:
                            console.log('second selected')
                            break;
                        case 2:
                            console.log('third selected')
                            break;
                    }
                })
            }
            ngOnDestroy() { }
        }
    

    【讨论】:

    • 非常感谢,我还在学习阶段,没有意识到我在搞混什么:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多