2017-02-11 51 views
1

我在聚合物中使用了this.push,但現在我得到了錯誤,我找不到它是由於。 這裏是我的代碼:聚合物陣列推送給出錯誤

if (!ui.validation.validateForm(this.$.partnerForm)) return; 
 

 
var partner = { 
 
name: this.$.partnerName.value, 
 
description: this.$.partnerDescription.value 
 
}; 
 

 
if (!this.eventData.partners) this.eventData.partners = []; 
 

 
this.push('eventData.partners', partner);

的錯誤是:

Uncaught TypeError: Cannot read property 'length' of undefined 
 
    at HTMLTemplateElement._applySplicesArrayOrder (polymer.html:4991) 
 
    at HTMLTemplateElement._render (polymer.html:4842) 
 
    at Debouncer.complete (polymer-mini.html:2081) 
 
    at Debouncer.boundComplete (polymer-mini.html:2058) 
 
    at Object._atEndOfMicrotask (polymer-mini.html:2036) 
 
    at MutationObserver.window.MutationObserver.observe.characterData

當調試使用console.log(this.eventData.partners)數據是存在的,但在那之後它給出了錯誤。這種推動可能有什麼問題?謝謝。

+0

所以你想推一個字符串或數據值?爲什麼你使用單引號'eventData.partners'? –

+0

因爲這是聚合物,這是它的語法。我想推入一個對象到'eventdata.partners'數組中。 –

+0

如果在eventData.partners上有數據綁定/觀察者,或者在eventData。*上有觀察者,則只需使用'this.push()'。 – tony19

回答

1

我發現了這個問題。我已經習慣這樣的:

if (!this.eventData.partners) this.eventData.partners = [];

我改變了它在下面的方式,它的工作現在:

if (!this.eventData.partners) this.set('eventData.partners', []);

這是聚合物具體問題。