1
我對這個問題很生氣: 我有一個模板組件,它使用{{#each}}循環來迭代一個註釋數組;Ember更新陣列不更新模板
comments: Ember.computed('commentsModel', function() {
return this.get('commentsModel').toArray();
}),
actions: {
addOne: function() {
this.set('comments', [{content: 'agent k'}]);
}
}
的組件被稱爲像這樣:
{{photo-comments commentsModel=model.comments}}
凡model.comments由路由的模型鉤返回; 當我點擊觸發「addOne」事件的按鈕時,模板正確更新,所有評論被刪除,只顯示新評論「agent k」;
但如果我想添加註釋到評論數組,而不是覆蓋整個數組,它不起作用; 我得到沒有錯誤,但模板只是忽略它,並沒有更新!
我試圖用推:
actions: {
addOne: function() {
this.set('comments', this.get('comments').push({content: 'agent k'});
}
}
與pushObject:
actions: {
addOne: function() {
this.set('comments', this.get('comments').pushObject({content: 'agent k'});
}
}
什麼!既然這讓我發瘋,有人能告訴我這有什麼問題嗎?
模板:
{{log comments}}
{{#each comments as |comment|}}
<div class="card">
<div class="card-content">
{{comment.username}}<br>
{{comment.content}}
</div>
<div class="card-action">
{{comment.createdAt}}
</div>
</div>
{{/each}}
這是我已經嘗試過的解決方案,出現錯誤「internalModel.getRecord不是函數」;有人向我解釋說,這是由於我的模型是查詢的結果,所以不可寫;這就是爲什麼我要將註釋轉換爲數組 –
啊,我想我誤解了那裏的用例。如果您要將數據推送到'RecordArray',我會在組件外執行轉換,並將數組傳遞到組件。 – solocommand
好的,如果你能提供一個可行的例子,那將是非常棒的,因爲我花了幾天的時間嘗試我所知道的一切,但卻無法使它工作。問題是:我得到了一些記錄(這是不可寫的),所以我必須將它們轉換爲可寫數組,並將該數組中的對象推入,導致模板更新... –