【问题标题】:How to pass data a html file to .ts file in Ionic (latest) from a search bar input如何从搜索栏输入将数据从 html 文件传递​​到 Ionic(最新)中的 .ts 文件
【发布时间】:2018-05-24 14:55:32
【问题描述】:

下面的代码带有视图和 .ts 。我想在搜索栏中输入一个输入,输入必须从html传递到.ts,并且我请求的Json数据应该根据传递的数据正确过滤。API Url是https://api.github.com/search/users?q=dines,其中if q 的值改变了,视图中的名称应该改变。

home.html

这是我的视图模板。

<ion-header>
  <ion-navbar color="primary">
    <ion-title>
     Git Profiles
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
<ion-item>
    <ion-searchbar floating [(ngModel)] = "myInput" (ionInput)="getNames($event) "> Search</ion-searchbar>
  </ion-item>

<ion-card *ngFor = "let post of posts?.items">

  <ion-item>
    <ion-avatar item-start>
      <img [src] = "post?.avatar_url" alt="" />
    </ion-avatar>
  </ion-item>
  <ion-card-content>
    <p>Name : {{post.login}}</p>
    <p>Score : {{post.score}}</p>
  </ion-card-content>

</ion-card>

</ion-content>

home.ts

import { Component, OnInit } from '@angular/core';
import { NavController } from 'ionic-angular';
import { PostProvider } from '../../providers/post/post';

@Component({
  selector: 'page-about',
  templateUrl: 'about.html'
})
export class AboutPage implements OnInit {

   posts:Post[];

  constructor(public navCtrl: NavController , private PostProvider: PostProvider ) {
  }


ngOnInit()
{
  this.PostProvider.getPosts().subscribe((posts)=> {
     this.posts = posts;
  });
}
}

interface Post{
  login:string,
  avatar_url:any,
  score:number
}

【问题讨论】:

标签: angular ionic-framework ionic2 ionic3


【解决方案1】:

import { Component, OnInit } from '@angular/core';
import { NavController } from 'ionic-angular';
import { PostProvider } from '../../providers/post/post';

@Component({
  selector: 'page-about',
  templateUrl: 'about.html'
})
export class AboutPage implements OnInit {

   posts:Post[];

  constructor(public navCtrl: NavController , private PostProvider: PostProvider ) {
  }


ngOnInit()
{
  this.PostProvider.getPosts().subscribe((posts)=> {
     this.posts = posts;
  });
}
}
search(data){
condsle.log(data);
}

interface Post{
  login:string,
  avatar_url:any,
  score:number
}
<ion-header>
  <ion-navbar color="primary">
    <ion-title>
     Git Profiles
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
<ion-item>
    <ion-searchbar floating [(ngModel)] ="myInput"  (keyup)="search(myinput)"(ionInput)="getNames($event) "> Search</ion-searchbar>
  </ion-item>

<ion-card *ngFor = "let post of posts?.items">

  <ion-item>
    <ion-avatar item-start>
      <img [src] = "post?.avatar_url" alt="" />
    </ion-avatar>
  </ion-item>
  <ion-card-content>
    <p>Name : {{post.login}}</p>
    <p>Score : {{post.score}}</p>
  </ion-card-content>

</ion-card>

</ion-content>

【讨论】:

    【解决方案2】:

    你好,你可以试试这样的

    home.html

    <ion-header>
      <ion-navbar color="primary">
        <ion-title>
         Git Profiles
        </ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
      <ion-item>
        <ion-searchbar floating [(ngModel)] = "myInput" (ionInput)="getNames($event) "> Search</ion-searchbar>
      </ion-item>
    
    <ion-card *ngFor = "let post of posts?.items">
    
      <ion-item>
        <ion-avatar item-start>
          <img [src] = "post?.avatar_url" alt="" />
        </ion-avatar>
      </ion-item>
      <ion-card-content>
        <p>Name : {{post.login}}</p>
        <p>Score : {{post.score}}</p>
      </ion-card-content>
    
    </ion-card>
    
    </ion-content>
    

    home.ts

    import { Component, OnInit } from '@angular/core';
    import { NavController } from 'ionic-angular';
    import { PostProvider } from '../../providers/post/post';
    
    @Component({
      selector: 'page-about',
      templateUrl: 'about.html'
    })
    export class AboutPage implements OnInit {
    
       posts:Post[];
    
    
      constructor(public navCtrl: NavController , private PostProvider: PostProvider ) {
    
      }
    
        ngOnInit()
        {
          this.PostProvider.getPosts().subscribe((posts)=> {
             this.posts = posts;
          });
    
        }
    
    }
    
    
    
    
    
    interface Post{
    
      login:string,
      avatar_url:any,
      score:number
    }
    

    离子 g 管道搜索

     transform(items: any[], terms: string): any[] {
      if(!items) return [];
      if(!terms) return items;
    
      return items.filter( it => {
        return it.score == terms; // only filter country terms
      });
    }
    

    然后加入@ngModule声明数组

    declarations: [
      MyApp,
      HomePage,
      SearchPipe,
    ],
    

    home.html

    <ion-content padding>
      <ion-item>
        <ion-searchbar floating [(ngModel)]="myInput" (ionInput)="getNames($event) "> Search</ion-searchbar>
      </ion-item>
    
    <ion-card *ngFor = "let post of posts?.items | search : myInput">
    
      <ion-item>
        <ion-avatar item-start>
          <img [src] = "post?.avatar_url" alt="" />
        </ion-avatar>
      </ion-item>
      <ion-card-content>
        <p>Name : {{post.login}}</p>
        <p>Score : {{post.score}}</p>
      </ion-card-content>
    

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 2021-12-23
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多