我发现一个jsbin可以说明我的问题。 http://emberjs.jsbin.com/ucanam/2708。
最后一个链接(在链接到的对象上未设置任何显式的查询参数)使用了 Controller 上的当前粘性查询参数值。有没有办法关闭此粘性功能?这样做会打破其他情况吗?
我当前的解决方案是使我想清除的每条路线上的查询参数都无效:
export default Ember.Route.extend({
deactivate: function() {
var controller = this.controllerFor(this.get('controllerName'));
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
});
这行得通,但似乎应该有一个更简单的方法。
我应该注意,对每条路由执行类似
{{#link-to 'route' (query-params val=null)}}{{/link-to}}
的操作不是一种选择,因为我有一些可重用的代码,其中该路由是一个变量,因此我不知道我必须将查询参数设为空。编辑:
如果答案中的文档发生更改,这是执行此操作的正确方法:
export default Ember.Route.extend({
resetController: function(controller, isExiting) {
if (isExiting) {
var queryParams = controller.get('queryParams');
for (var i = 0; i < queryParams.length; i++)
controller.set(queryParams[i], null);
}
}
});
编辑2:
现在,通过此附加组件https://github.com/kellyselden/ember-query-params-reset可以很容易地做到这一点。它还会重置为原始值,而不仅仅是使值无效。
最佳答案
在指南中,它为您提供了两种处理方式的选择:https://guides.emberjs.com/release/routing/query-params/#toc_sticky-query-param-values
看起来选项2与您正在执行的操作非常接近:
关于javascript - 在Ember.js中关闭粘性查询参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26487993/