2016-12-07 241 views
0

我正在使用AngularFire2作爲Ionic 2的提供者。我正在製作一個基本列表應用程序。以下是我在Firebase中的數據。Ionic 2&Angularfire2 + Firebase

{ 
    "Checklists" : { 
    "0" : { 
     "title" : "new List" 
    }, 
    "-KYHODAYcQ4OKMAzcXSG" : { 
     "items" : [ { 
     "checked" : "false", 
     "title" : "Milk" 
     } ], 
     "title" : "Newest List" 
    }, 
    "-KYHS654NUHiwkexMwhL" : { 
     "items" : [ { 
     "checked" : "false", 
     "title" : "asdfadf" 
     } ], 
     "title" : "ddddd" 
    } 
    } 
} 

我有這一切拉好在我的家庭觀點和更新每個清單沒有問題的標題。我在我的數據提供者類中使用此代碼檢索數據,然後在我的home.ts中調用它。順便說一句,這很好。

this.checklists = angFire.database.list('/Checklists'); 

當我導航到我的應用程序中的新視圖時,問題出現了。因此,我使用此代碼移動到清單項目視圖並傳遞當前清單。

this.checklist = this.navParams.get('checklist'); 

所以現在,在清單項來看,我把目前的檢查表的參考與標題,如果清單有這些項目一起。如果我已經在Firebase中使用它們,則此工作正常。

問題是如何將項目或項目數組添加到其中一個清單(如果它不存在於Firebase中)。我可以這樣做,在該視圖現在沒有問題,

if(this.checklist.items && this.checklist.items.length > 0){ 
    this.checklist.items.push({title: data.name, checked:"false"}); 
}else{ 
    this.checklist.items = [{title: data.name, checked:"false"}]; 
    console.log(this.checklist); 
} 

這是當我想將它更新到,我遇到一個問題火力地堡。我可以通過在我的數據提供程序中執行此操作來使用初始數組項目更新一個清單。

this.checklists.update(id, {items: [ 
     { 
      title: itemTitle, 
      checked: "false" 
     } 
    ]}); 

但是這會覆蓋已經存在的任何東西。

我需要獲得對當前清單的引用,看看是否有一個項目數組,但我找不到任何文檔。我試過裁判,但那不行。任何幫助都會很棒。謝謝。

回答

0

所以我最終得到它的工作,但不知道如果這是正確的方式來做到這一點。在清單項查看我添加項目到當前checklist.items陣列通過這樣

**this is the checklist-items view** 
if(this.checklist.items && this.checklist.items.length > 0){ 
    this.checklist.items.push({title: data.name, checked:"false"}); 
}else{ 
    this.checklist.items = [{title: data.name, checked:"false"}]; 
    console.log(this.checklist); 
} 

然後我打電話添加的功能和項目在我的數據提供程序類,並將其發送具有整個清單整個項目數組。

this.data.addItem(this.checklist); 

然後在我的數據提供者,我只是在我的數據提供者類這樣覆蓋當前清單整個項目陣列。

**this is the data-provider view** 
addItem(checklist):void { 
    let checklistId = checklist.$key; 

    this.checklists.update(checklistId, {items: checklist.items}); 
} 

這有效,但就像我說的不知道它是否是正確的方式。

0

我建議不要使用數組來存儲數據。數組存儲爲具有整數作爲鍵名稱的對象。這些整數不可靠,因爲它們不是永久密鑰。如果數組中的項目被刪除,則提交整個數組,並且項目將具有新的整數鍵。

建議的數據結構:

checklist 
    -key 
     items 
      -itemKey 
       name: "milk" 
       checked: true 
      -itemKey 
       name: "bread" 
       checked: false  
      -itemKey 
       name: "sugar" 
       checked: true   
     title: "newest list" 
相關問題