私は自分のデータベースレスポンスから得られるオブジェクトの配列を持っています。 各オブジェクトには、もちろん、名前講義、クラス、時間、日の名前があります。 私のデータベースには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);
});
}
名前を複製します。
私はこの方法を試してみましたが、それは私がエラーを示し 私はこのエラー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);
});
}?
を私はやりたい正確に何だが、私はcouseA [newLectureを実行しようとしましたこと。名前] .push(newLecture)と動作していません。 "エラー:例外:未定義のプロパティ 'push'を読み取ることができません" –
さらに、angular2にng-repeatがありません –
オブジェクトをプッシュする前にサブアレイを初期化する必要があります 'if(!courseA [newLecture.name]) courseA [newLecture.name] = [] '私はあなたがionic2にいるのを捕まえていませんでしたが、これは 'ngFor' –