关闭Ember.js中的粘性查询参数

问题描述 投票:7回答:1

我找到了一个说明我问题的jsbin。 http://emberjs.jsbin.com/ucanam/2708

最后一个链接,在链接到没有设置显式查询参数的情况下,它使用控制器上的当前粘滞查询参数值。有没有办法关闭这个粘性功能?会这样做会打破其他情况吗?

我目前的解决方案是在我想要清除的每条路线上清空查询参数:

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}}这样的东西不是一个选项,因为我有一些可重用的代码,其中路由是一个变量,所以我不知道查询参数我必须为空。

Edit:

如果答案中的文档发生变化,这是正确的方法:

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);
    }
  }
});

Edit 2:

现在通过这个插件https://github.com/kellyselden/ember-query-params-reset很容易做到这一点。它还会重置为原始值,而不仅仅是将值清零。

javascript ember.js query-parameters
1个回答
3
投票

它为您提供了两个如何在指南中处理此选项的选项:https://guides.emberjs.com/release/routing/query-params/#toc_sticky-query-param-values

选项#2看起来非常接近你正在做的事情:

在退出路径或更改路径模型之前,使用Route.resetController挂钩将查询参数值设置回其默认值。

© www.soinside.com 2019 - 2024. All rights reserved.