表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
26/61

ionicを試す 13日目のソース

よく使う3つのファイルのソースコードです。


インデントを全角スペースに変換していますので、半角スペース2つに変換してお使いください。

場所は、"プロジェクトフォルダ\src\app\home"です。


home.page.html

---------------------------------------------------------------

<ion-content [fullscreen]="true">

 <div id="container">

  <table class="table" border="1">

   <tr>

    <th>取消</th>

    <th>オーダー</th>

    <th>注文</th>

    <th>メニュー</th>

   </tr>

   <tr *ngFor="let entry of Menu; index as index">

    <td><ion-checkbox *ngIf="Order.length > index" [(ngModel)]="Order[index].isChecked"></ion-checkbox></td>

    <td><span *ngIf="Order.length > index">{{Order[index].val}}</span></td>

    <td><ion-checkbox [id]="'chk' + entry.category_id + entry.sub_id" [(ngModel)]="entry.isChecked" (ngModelChange)="fnChangeMenuCheck(index)"></ion-checkbox></td>

    <td>{{entry.val}}</td>

   </tr>

  </table> 

  Order配列の要素数:{{Order.length}}

 </div>

</ion-content>

---------------------------------------------------------------



home.page.ts

---------------------------------------------------------------

import { JsonPipe } from '@angular/common';

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


@Component({

 selector: 'app-page-home',

 templateUrl: 'home.page.html',

 styleUrls: ['home.page.scss']

})

export class HomePage {

 //メニュー配列

 public Menu = [

  { val: 'ナポリ風', category_id: '00', category_name: '生地', sub_id: '01', isChecked: false },

  { val: 'クリスピー', category_id: '00', category_name: '生地', sub_id: '02', isChecked: false },

  { val: 'アメリカン', category_id: '00', category_name: '生地', sub_id: '03', isChecked: false },


  { val: 'トマトソース', category_id: '01', category_name: 'ソース', sub_id: '01', isChecked: false },

  { val: 'ホワイトソース', category_id: '01', category_name: 'ソース', sub_id: '02', isChecked: false },

  { val: 'バジルソース', category_id: '01', category_name: 'ソース', sub_id: '03', isChecked: false },

  { val: 'ソースレス', category_id: '01', category_name: 'ソース', sub_id: '04', isChecked: false },


  { val: 'ペパロニ', category_id: '02', category_name: 'トッピング', sub_id: '001', isChecked: false },

  { val: 'オニオン', category_id: '02', category_name: 'トッピング', sub_id: '002', isChecked: false },

  { val: 'トマト', category_id: '02', category_name: 'トッピング', sub_id: '003', isChecked: false },

  { val: '照り焼きチキン', category_id: '02', category_name: 'トッピング', sub_id: '004', isChecked: false },

  { val: 'ダブルチーズ', category_id: '02', category_name: 'トッピング', sub_id: '005', isChecked: false },


  { val: 'コーラ', category_id: '03', category_name: 'サイドメニュー', sub_id: '001', isChecked: false },

  { val: 'ウーロン茶', category_id: '03', category_name: 'サイドメニュー', sub_id: '002', isChecked: false },

  { val: 'サラダ', category_id: '03', category_name: 'サイドメニュー', sub_id: '003', isChecked: false },

  { val: 'ポテト', category_id: '03', category_name: 'サイドメニュー', sub_id: '004', isChecked: false },

  { val: 'アイス', category_id: '03', category_name: 'サイドメニュー', sub_id: '005', isChecked: false }

 ];

 //オーダー配列(初期状態は空)

 public Order = [

 ];


 fnChangeMenuCheck(index:number){

  //該当する要素を文字列化して

  let strObj = JSON.stringify(this.Menu[index]);

  //その文字列から新規にオブジェクトtmpObjを作成

  let tmpObj = JSON.parse(strObj);


  //tmpObjのcategory_idとsub_idの組み合わせが、Order配列に存在するかを調べる。

  const intExistIndex = this.Order.findIndex((u) => (u.category_id + u.sub_id)=== (tmpObj.category_id + tmpObj.sub_id));


  if(this.Menu[index].isChecked){

   //チェックがついていて、そのアイテムがOrder配列に無ければ追加する

   if(intExistIndex == -1){

    //そのオブジェクトをOrder配列の末尾に追加

    this.Order.push(tmpObj);

   }

  }else{

   //チェックが外され、そのアイテムがOrder配列にあれば削除

   if(intExistIndex != -1){

    this.Order.splice(intExistIndex,1);

   }

  }

 }

}

---------------------------------------------------------------



home.page.scss

---------------------------------------------------------------

#container {

 text-align: center;


 position: absolute;

 left: 0;

 right: 0;

 top: 50%;

 transform: translateY(-50%);

}


#container strong {

 font-size: 20px;

 line-height: 26px;

}


#container p {

 font-size: 2o0px;

 line-height: 1.5;


 color: black;


 margin: 0;

}


#container a {

 text-decoration: none;

}

---------------------------------------------------------------

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ