2016-11-10 38 views
0

我有我從我的數據庫的響應得到的對象數組。 每個對象有當然的名稱,名稱講座,課堂,小時,日子。 在我的數據庫是一個關係到許多 - >意味着每個講座都有很多教訓,所以我有講座和次表的表。離子2:用相同的價值觀瑪吉細節

times表中有le_io_id的foreign_key,這意味着 lectures表:lecture_id(primary_key)+更多屬性。 倍表:id_lecture(foreign_key),id_time(primary_key)+多個屬性。 我做了查詢

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

它工作正常,給我我想要的結果。 的問題是,每個演講有一些經驗,我想在顯示相同的離子項這些課程和它瑪吉到一個對象。 換句話說我想這樣做。 enter image description here

這是我的代碼來獲取數據

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); 
     }); 
    } 

,你可以看到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 
      } 

但也有許多與一些教訓,所以,如果我這樣做的方式是問題,因爲它會重複名稱。

我試過這種方式,但它讓我錯誤

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); 
    }); 

}

我得到這個錯誤

TypeError: Cannot read property 'push' of undefined

有人有什麼辦法解決呢?

回答

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),它不工作。它顯示錯誤「EXCEPTION:無法讀取未定義的」 –

+0

「的屬性'推''此外,在angular2中沒有ng-repeat –

+0

您需要在將對象推入它之前初始化子陣列if(!courseA [newLecture.name]) courseA [newLecture.name] = []'。我沒有聽清楚你在ionic2,但這是非常相同的方式使用'ngFor' –