【问题标题】:Ember Query Params unset Query ParameterEmber 查询参数未设置查询参数
【发布时间】:2014-07-31 22:47:02
【问题描述】:

我正在使用新的 Ember 查询参数,但遇到“取消设置”查询参数的问题。

我有一个场景,我需要从以下内容导航:?game=13 到 ?question=14。 这意味着我的路由器上有 2 个查询参数:游戏、问题。不幸的是,这种转变(来自 ?game=13):

this.transitionToRoute({queryParams: {question: 14}} );

不幸的是,这导致:

?game=13&question=14.

我也试过了:

this.transitionToRoute({queryParams: {question: 14, game: null}} );

导致:

?game=null&question=14

因为不知何故,一切都是字符串转换的。

如何转换到 ?question=14 并移除游戏查询参数?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    将存储查询参数的属性初始化为某个值。将它们设置回此初始值,以便稍后将它们从您的 URL 中删除:

    App.SomeController = Ember.Controller.extend({
        queryParams: ['myParam'],
        myParam: "initial",
    
        ...
    );
    

    稍后...

    controller.set('myParam', "initial");
    

    【讨论】:

      【解决方案2】:

      尝试在控制器中为您的查询参数设置一个默认值。之后你可以这样做:

      this.transitionToRoute({queryParams: {question: 14, game: <the default value that you set in the controller>}} );
      

      【讨论】:

      • 这不起作用,因为默认值为空。但是当我提供 null 作为值时,它会转换为“null”(作为字符串),然后我得到: ?game=null&question=14
      • 尝试“”而不是 null。为我工作!
      【解决方案3】:
      var params = {};
      if(this.get('controller.question') params.question = this.get('controller.question');
      if(this.get('controller.game') params.game = this.get('controller.game');
      
      this.transitionToRoute({queryParams: params} );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多