2017-04-07 70 views
1

我有我的項目下列JSON結構:陣列上的JSON對象 - HTTP PUT

"disputas": [ 
    { 
     id: "", 
     tipo_negociacao: "", 
     historico:[{ 
     fl_usuario: "", 
     created_at: "", 
     updated_at: "", 
     created_by: null, 
     updated_by: null, 
     texto: "", 
     }] 
    } 
] 

我想補充的historico一個新的指數,當我點擊一個按鈕,但不知道如何要做到這一點,我希望它看起來像這樣:

"disputas": [ 
     { 
      id: "", 
      tipo_negociacao: "", 
      historico:[{ 
      fl_usuario: "", 
      created_at: "", 
      updated_at: "", 
      created_by: null, 
      updated_by: null, 
      texto: "", 
      }, 
      { 
      fl_usuario: "", 
      created_at: "", 
      updated_at: "", 
      created_by: null, 
      updated_by: null, 
      texto: "", 
      } 

     ] 
    } 
] 

到目前爲止,我已經做了這樣的事情(功能按鈕調用):

 recusaProposta() { 
     this.disputa.historico[this.i].texto = "something"; 
     this.i++; 
} 

現在,由於0i開始這個工程上,我第一次按一下按鈕,但如果我點擊它再次,我會得到這個錯誤:

Cannot set property 'texto' of undefined

有人能幫助我嗎?感謝

回答

1

只需按下一個新項目的歷史一數組:

this.disputa.historico.push({ 
fl_usuario: "", 
      created_at: "", 
      updated_at: "", 
      created_by: null, 
      updated_by: null, 
      texto: "" 
}); 
1

當您試圖將一個未定義或空對象上訪問屬性碰上錯誤

Cannot set property 'texto' of undefined

您將首先必須在其位置創建一個空對象(如果尚不存在)。 您的代碼的方式,它期望對象出現在您嘗試訪問的索引中。

var existingObj = this.disputa.historico[this.i]; 

// if the value is falsy, then go ahead and create 
// an empty object at that index 
if(!existingObj) { 
    this.disputa.historico[this.i] = {}; 
} 

existingObj.texto = "something"; 
+0

感謝您的回答,有是我現在在另一方面發現的更簡單的解決方案但是這個是有道理的,並且有一個很好的解釋。謝謝 –

+0

@RenêSilvaLima歡迎您:) –

1

只需追加數組:

this.disputa.historico.push({/* your object here*/}); 
0

試試這個

disputas.historico.push({/* obj*/}); 
+1

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/15777175) –

+0

@RicardoAlvaroLohmann Link?什麼鏈接? – Pang