Ember-data将queryParam重置为默认值

时间:2015-07-30 19:52:39

标签: ember.js ember-data

在我的模型中,我有一个queryParam状态,在我的路由中设置为refreshModel为true。

queryParams: {
    status: {
        refreshModel: true
    }
}

在我的控制器中,此参数设置为“打开”'默认情况下:

App.ConversationsController = Ember.ArrayController.extend({
    queryParams: ['status']
    status: 'opened'
});

每当我将此参数设置为其他内容时,例如'所有',Ember-data将其重置为“打开”'并且对我的模型钩子进行了两次调用而不是一次调用,并且在我的模型钩子上使用断点观察到这种行为(我不知道它重置的位置),一个用param打开:一个用param:all。我甚至把一个观察者放在上面,它有效地做到了。

请注意,我已经搜索了我的代码,并且无处可以将此参数设置回原始值。

任何提示?

1 个答案:

答案 0 :(得分:0)

您必须在控制器中将它们声明为路线中的预期参数

App.ConversationsController = Ember.ArrayController.extend({
    queryParams: ['status'],
    status: 'opened'
});
如同在文档中所说的那样,Ember有着粘性的咒语。

  

默认情况下,查询Ember中的参数值是"粘性",如果您是   对查询参数进行更改,然后离开并重新输入路径,   该查询参数的新值将被保留(而不是重置   到它的默认值)。这是保存的特别方便的默认值   在路线之间来回导航时排序/过滤参数

您可以在此处查看更多内容... ember query params

您可以尝试在路线中重置它们

resetController: function (controller, isExiting, transition) {
        if (isExiting) {
          //reset controller to avoid sticky params
          controller.set('status', DEFAULT_VALUE);
        }
    },