在我的模型中,我有一个queryParam状态,在我的路由中设置为refreshModel为true。
queryParams: {
status: {
refreshModel: true
}
}
在我的控制器中,此参数设置为“打开”'默认情况下:
App.ConversationsController = Ember.ArrayController.extend({
queryParams: ['status']
status: 'opened'
});
每当我将此参数设置为其他内容时,例如'所有',Ember-data将其重置为“打开”'并且对我的模型钩子进行了两次调用而不是一次调用,并且在我的模型钩子上使用断点观察到这种行为(我不知道它重置的位置),一个用param打开:一个用param:all。我甚至把一个观察者放在上面,它有效地做到了。
请注意,我已经搜索了我的代码,并且无处可以将此参数设置回原始值。
任何提示?
答案 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);
}
},