2016-11-10 11 views
0

私は自分のデータベースレスポンスから得られるオブジェクトの配列を持っています。 各オブジェクトには、もちろん、名前講義、クラス、時間、日の名前があります。 私のデータベースには1対多の関係があります - >は各講義に多くのレッスンがあることを意味するので、私は講義とテーブルのテーブルを持っています。イオン2:同じ値を持つ詳細を作成する

timesテーブルには、lecture_idのforeign_keyがあります。つまり、 講義テーブル:lecture_id(primary_key)+その他の属性です。 timesテーブル:id_lecture(foreign_key)、id_time(primary_key)以上の属性。 私は、クエリ

"SELECT * from lectures,Times where id_lecture=lecture_id";

それが正常に動作し、私が望む結果を与えるをしました。 問題は各講義にいくつかのレッスンがあることです。これらのレッスンを同じイオンアイテムに表示して1つのオブジェクトに追加したいと思っています。 言い換えれば、私はそのようにしたい。あなたはnewLectureが

var newLecture={ 
       name:lecture.name, 
       email:lecture.email, 
       phone:lecture.phone , 
       lesson_type:lecture.lesson_type , 
       detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day}, 
       details:lecture.details, 
       course_name:lecture.course_name 
      } 

が含まれていますが、私はそれがため、問題です。この方法を行うので、もし多くは、いくつかの教訓である見ることができるようにデータを

this.coursesData.LoadLectures() 
     .subscribe(LectureList=> { 
      console.log("getLec1"); 
      LectureList.forEach(lecture=>{ 
      console.log(lecture); 
      var newLecture={ 
       name:lecture.name, 
       email:lecture.email, 
       phone:lecture.phone , 
       lesson_type:lecture.lesson_type , 
       detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day}, 
       details:lecture.details, 
       course_name:lecture.course_name 
      } 
      this.coursesA.push(newLecture); 
      this.coursesNames.push(lecture.course_name); 
      this.LecturesNames.push(lecture.name); 
      }); 
      //this.courseSelect=this.coursesNames[0]; 
      this.coursesAD=this.coursesA; 
      this.coursesNames = this.coursesNames.filter(function(elem, index, self) { 
        return index == self.indexOf(elem); 
       }) 
      // console.log("co"+this.coursesA); 


       this.loader.dismiss(); 
       //console.log(this.LecturesNames); 
     // return this.coursesA; 

     },err=>{ 
      console.log(err); 
     }); 
    } 

を得るために私のコードです enter image description here

名前を複製します。

私はこの方法を試してみましたが、それは私がエラーを示し

私はこのエラー

TypeError: Cannot read property 'push' of undefined

誰かがそれを解決するためにどのような方法を持っているのだ

public Lectures(){ 
    console.log("getLec"); 
    this.courseSelect=''; 
    this.coursesNames=[]; 
    this.LecturesNames=[]; 
    this.coursesA=[]; 

this.coursesData.LoadLectures() 
    .subscribe(LectureList=> { 
     console.log("getLec1"); 
     LectureList.forEach(lecture=>{ 
     console.log(lecture); 
     var newLecture={ 
      id:lecture.id_lecture, 
      name:lecture.name, 
      email:lecture.email, 
      phone:lecture.phone , 
      lesson_type:lecture.lesson_type , 
      detailsHours:{'start_time':lecture.start_time,'end_time':lecture.end_time,'class':lecture.class, 'day':lecture.day}, 
      details:lecture.details, 
      course_name:lecture.course_name 
     } 
     console.log("de"+newLecture.detailsHours.start_time); 
     if(!newLecture.id){ 
      this.coursesA[newLecture.id]=newLecture; 
     // this.coursesNames.push(lecture.course_name); 
     //this.LecturesNames.push(lecture.name); 
     } 
     else{ 
      this.coursesA[newLecture.id].push(newLecture); 
     } 

     }); 
     this.coursesAD=this.coursesA; 

     //this.courseSelect=this.coursesNames[0]; 

     console.log(this.coursesA); 
     /*this.coursesNames = this.coursesNames.filter(function(elem, index, self) { 
       return index == self.indexOf(elem); 
      }) 
      */ 

     // console.log("co"+this.coursesA); 

      this.loader.dismiss(); 
      console.log("lets"+this.LecturesNames); 
    // return this.coursesA; 


    },err=>{ 
     console.log(err); 
    }); 

}?

答えて

0

サブアレイを使用して、コースを名前(またはcourse_name)でグループ化することができると思います。 newLecturecourseAの内側に押すのではなく、courseA[newLecture.name]の内部に押し込むことができます。あなたが行うことができ、あなたのテンプレートでは、その後

{ 
    "JAVA Course": [ 
     { lecture1 }, 
     { lecture2 } 
    }], 
    "JS Course": [ 
     { lecture3 }, 
     { lecture4 } 
    }] 
} 

したがって、あなたのようなものを持っています

<ion-item ng-repeat="(key, value) in obj"> 
    <p>{{key}}</p> <!-- example: JAVA Course --> 
    <div ng-repeat="(subkey, subvalue) in value"> 
     {{subvalue}} <!-- example: lecture hours --> 
    </div> 
</ion-item> 
+0

を私はやりたい正確に何だが、私はcouseA [newLectureを実行しようとしましたこと。名前] .push(newLecture)と動作していません。 "エラー:例外:未定義のプロパティ 'push'を読み取ることができません" –

+0

さらに、angular2にng-repeatがありません –

+0

オブジェクトをプッシュする前にサブアレイを初期化する必要があります 'if(!courseA [newLecture.name]) courseA [newLecture.name] = [] '私はあなたがionic2にいるのを捕まえていませんでしたが、これは 'ngFor' –

関連する問題