Ember每个循环在更新数组时重新渲染整个对象数组

时间:2019-02-13 12:16:38

标签: javascript ember.js ember-cli

我正在使用Ember 1.13.15

我有一个对象数组(包含嵌套对象),该对象数组使用每个循环进行迭代,并传递给子组件。

//parent.hbs

{{#each configData as |item index|}}

    {{ my-child
        childId=(concat item.name index)
        childName= item.name
        childColor=item.color
        childEnabled=item.enabled
        actionUpdateParent='action1'
    }}

以及组件内部的以下观察者

//parent.js

configDataObserver: function(){

    var configData = this.get('configDataFromSource');

    this.set( 'configData' , configData );

}.observes('configDataFromSource'),

现在,每当configData数组中的任何对象被更新时,each循环都会遍历整个数组,并且所有子组件都将被重绘,从而导致严重的性能问题。

我发现了类似的问题,但没有一个提供明确的解决方案。请帮忙。

1 个答案:

答案 0 :(得分:4)

我认为您需要在每个密钥中设置密钥。

赞:

https://www.emberjs.com/api/ember/release/classes/Ember.Templates.helpers/methods/if?anchor=each

{{#each configData key="name" as |item index|}}