2017-07-26 164 views
1

我有一個用於計算嵌套屬性的模態組件的問題。計算嵌套屬性Vuejs

我有一個父組件,它調用通過道具傳遞數據的「模態組件」。
我傳遞給我的元件庫的對象是這樣的:

modalProposal:{ 
    name:test, 
    old: { name: oldTest } 
} 

所以我我的對象傳遞給我的部件:

<modal :modal-proposal="modalProposal"></modal> 

所以我的模態的部件應具備:

export default { 
     props:["modalProposal"], 
     data() { 
      return { 
      } 

     }, 
     computed:{ 
      proposal(){ 
       return this.modalProposal; 
      } 
     } 
    } 

modalProposal由v-for的組件父項功能設置,例如:

<button class="btn btn-primary" id="show-modal" v-on:click="openModal(proposal)">see proposal</button> 

功能openModal:

openModal(proposal){ 
       this.modalProposal = proposal; 
       $('#proposalModal').modal('show'); 
      } 

現在我的問題是,在模板中,如果我寫proposal.name它的工作原理,但如果我寫proposal.old.name,則返回錯誤

"TypeError: Cannot read property 'name' of undefined"

如何訪問傳遞給proposal的嵌套屬性?

+0

'modalProposal'是異步設置的嗎? – Bert

+0

謝謝我編輯我的帖子與設置modalProposal – LorenzoBerti

回答

2

如果隨時modalProposal.oldundefined那麼代碼proposal.old.name將拋出一個錯誤。通常這是通過使用警衛來解決的,或者只是不嘗試訪問proposal.old.name,直到proposal.old有一個值。

下面是一個警衛的例子。

proposal.old && proposal.old.name 
+0

謝謝! :)是的,它可以工作,但我不想設置modalProposal?我用編輯方式編輯了我的問題! – LorenzoBerti

+0

@LorenzoBerti你設置它的方式很好。我不確定你需要計算出的「提案」。根據目前的情況,您可以在模板中使用'modalProposal'。但在這兩種情況下,你都需要守衛。 – Bert

+0

好!謝謝!如果沒有它,我需要進行計算,模板中的提案對象不會隨着道具的更改而更新。 – LorenzoBerti