在加载时重置灰烬组件

时间:2014-06-13 16:38:27

标签: javascript ember.js

我有一个Ember.Component,它将项添加到空数组并在提交时返回数组。问题是,如果我离开包含Component的Route(在提交和不提交之后),然后再回到它,那么数组中最后的信息仍然存在。每次我使用组件导航到路线时,我都希望重置。

如果这是一条路线,我只需编写一个willTransitiondeactivate方法来重置我的属性。但由于它是一个组件,它没有那些方法,我不能(我知道)访问我希望从父路由重置的属性。那么,每次加载此路由时,如何将此数组重置为空(或重置整个组件)?谢谢!

1 个答案:

答案 0 :(得分:8)

更有可能的是,您没有正确设置正在使用的值。举几个例子:

Ember.Component.extend({
    items: []
});

Ember.Component.extend({
    items: null,

    init: function() {
        this._super();
        this.set('items', []);
    }
});

在第一个组件中,组件的每个实例共享相同的items数组。因此,如果您添加一个项目,然后创建一个新组件,新组件仍然具有该项目(我认为这是您的问题)。

在第二个组件中,您可以看到我在items函数中设置了init属性。当我设置属性时,我每次都将它设置为不同的数组。现在,每个组件都有自己的items属性。

如果没有您的代码,很难说,但这似乎是您的问题。