UNPKG

tns-template-master-detail-kinvey-ng

Version:

Master-detail interface to display collection of items from Kinvey and inspect and edit selected item properties.

79 lines (69 loc) 3.2 kB
import { Component, OnInit } from "@angular/core"; import { RouterExtensions } from "nativescript-angular/router"; import { ListViewEventData } from "nativescript-ui-listview"; import { ObservableArray } from "tns-core-modules/data/observable-array"; import { Car } from "./shared/car.model"; import { CarService } from "./shared/car.service"; /* *********************************************************** * This is the master list component in the master-detail structure. * This component gets the data, passes it to the master view and displays it in a list. * It also handles the navigation to the details page for each item. *************************************************************/ @Component({ selector: "CarsList", templateUrl: "./car-list.component.html", styleUrls: ["./car-list.component.scss"] }) export class CarListComponent implements OnInit { private _isLoading: boolean = false; private _cars: ObservableArray<Car> = new ObservableArray<Car>([]); constructor( private _carService: CarService, private _routerExtensions: RouterExtensions ) { } /* *********************************************************** * Use the "ngOnInit" handler to get the data and assign it to the * private property that holds it inside the component. *************************************************************/ ngOnInit(): void { this._isLoading = true; /* *********************************************************** * The data is retrieved remotely from FireBase. * The actual data retrieval code is wrapped in a data service. * Check out the service in cars/shared/car.service.ts *************************************************************/ this._carService.load() .then((cars: Array<Car>) => { this._cars = new ObservableArray(cars); this._isLoading = false; }) .catch(() => { this._isLoading = false; }); } get cars(): ObservableArray<Car> { return this._cars; } get isLoading(): boolean { return this._isLoading; } /* *********************************************************** * Use the "itemTap" event handler of the <RadListView> to navigate to the * item details page. Retrieve a reference for the data item (the id) and pass it * to the item details page, so that it can identify which data item to display. * Learn more about navigating with a parameter in this documentation article: * http://docs.nativescript.org/angular/core-concepts/angular-navigation.html#passing-parameter *************************************************************/ onCarItemTap(args: ListViewEventData): void { const tappedCarItem = args.view.bindingContext; this._routerExtensions.navigate(["/cars/car-detail", tappedCarItem.id], { animated: true, transition: { name: "slide", duration: 200, curve: "ease" } }); } }