blu*_*dio 5 typescript ionic2 angular
我对Ionic很新,偶然发现了我在下面的代码中遇到的问题.我有一个名为restaurant.html的页面,其中列出了餐馆,当点击每个项目时,数据被传递(从服务文件中提取的数据)到另一个应该提供完整详细信息的页面.然而,这似乎没有传递每个不同的餐厅的细节.谁能告诉我哪里出错了?
这是页面.
restaurant.html
<ion-header>
<ion-navbar color="restaurant-color">
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Restaurants</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding class="restaurants attractions common-bg">
<div class="card round" margin-bottom *ngFor="let restaurant of restaurants" (click)="viewRestaurant(restaurant.id)">
<div class="card-header" [ngStyle]="{'background-image': 'url(' + restaurant.thumb + ')'}"></div>
<div class="padding-xs">
<h5>{{ restaurant.name }}</h5>
<div class="rating">
<ion-icon name="md-star" color="restaurant-color" *ngFor="let star of range(restaurant.rating)"></ion-icon>
<ion-icon name="md-star" color="gray" *ngFor="let star of range(5 - restaurant.rating)"></ion-icon>
<span color="gray">{{ restaurant.reviews.length }} reviews</span>
</div>
<span color="gray">Recommended for:</span>
<div>
<div class="pull-left">
<span color="restaurant-color">{{ restaurant.scores[0].name }},</span>
<span color="restaurant-color">{{ restaurant.scores[1].name }}</span>
</div>
<div class="pull-right">
{{ restaurant.location.distance }} km
</div>
<div class="clear"></div>
</div>
</div>
</div>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
和餐馆.ts
import {Component} from "@angular/core";
import {NavController} from "ionic-angular";
import {RestaurantService} from "../../services/restaurant-service";
import {RestaurantDetailPage} from "../restaurant-detail/restaurant-detail";
@Component({
selector: 'page-restaurants',
templateUrl: 'restaurants.html'
})
export class RestaurantsPage {
// list of restaurants
public restaurants;
constructor(public nav: NavController, public restaurantService: RestaurantService) {
this.restaurants = restaurantService.getAll();
}
// view restaurant detail
viewRestaurant(id) {
this.nav.push(RestaurantDetailPage, {id: id})
}
// make array with range is n
range(n) {
return new Array(Math.round(n));
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为您仅传递餐厅 ID 作为参数,而不是整个餐厅详细信息。
<div class="card round" margin-bottom *ngFor="let restaurant of restaurants" (click)="viewRestaurant(restaurant)">
Run Code Online (Sandbox Code Playgroud)
修改 HTML,以便传递整个对象数据。还在推送时将整个数据作为参数发送到其他页面
viewRestaurant(restaurant) {
this.nav.push(RestaurantDetailPage, {id: restaurant})
}
Run Code Online (Sandbox Code Playgroud)
希望您只寻找这个
| 归档时间: |
|
| 查看次数: |
6384 次 |
| 最近记录: |