使用queryParam时,Ember Cli Bootstrap Date Picker格式错误

时间:2016-09-05 08:30:38

标签: ember.js ember-cli

我一直在使用Ember-CLI-Bootstrap-Datepicker一段时间,直到现在,当我使用queryParams为我的搜索目的获取日期值时,我没有问题,may params中的格式如下: / p>

"date_due_gteq=Thu%20Sep%2001%202016%2000%3A00%3A00%20GMT%2B0800%20(MYT)" 

哪一个不正确?我搜索并发现显然我的日期对象需要转换为ToString但是,我已经尝试但仍然有同样的问题。

如果你们有这个附加组件的经验,这将是很好的,帮助我弄清楚我的错误是什么。我正在分享代码的一部分:

模板:

{{bootstrap-datepicker value=date_due_gteq format="yyyy-mm-dd" placeholder="due date (to)" class="form-control" autoclose=true forceDateValue=true}} 

控制器:

  queryParams: [ "date_due_gteq","date_due_lteq"],
  date_due_gteq: null,
  date_due_lteq: null,

路线:

  model(params) {
    return this.findPaged('task', {
      q: {
        date_due_gteq: params.date_due_gteq,
        date_due_lteq: params.date_due_lteq,
      }
    });
  },
  actions: {
    queryChanged() {
      this.refresh();
    }
  }

这是可能的解决方案https://github.com/soulim/ember-cli-bootstrap-datepicker/issues/72

  

嘿@stonetwig!因为你有一个Date对象,所以由你决定如何   将其转换为任何格式的字符串。

     

示例:

     

var today = new Date(); today.toISOString(); // =>   " 2016-03-04T09:20:49.447Z"使用Date对象的其他方法   可以提取年,日,小时等。

     

查询参数可以不直接绑定到Date对象,那么你   有自由将其转换为所需格式的字符串,也是   将查询参数字符串转换为Date对象。

1 个答案:

答案 0 :(得分:1)

对于那些有这个问题的人,我已经解决了这个问题。

在您的控制器中,只需添加一个新属性startDateToJSDate即可使用Moment将日期转换为正确的格式,或者您可以使用Ember.computed

执行任何其他操作
date_due_gteq: null,
startDateToJSDate: Ember.computed('date_due_gteq', {
    get(key) {
      return this.get('date_due_gteq') ? moment(this.get('date_due_gteq')).toDate() : null;
    },
    set(key, value) {
      this.set('date_due_gteq', value ? moment(value).format('YYYY-MM-DD') : '');
      return value;
    }
  }),

然后将您的日期选择器输入更改为

{{bootstrap-datepicker value = startDateToJSDate format =“yyyy-mm-dd”placeholder =“due date(from)”class =“form-control”autoclose = true forceDateValue = true} }

另外,您只需添加queryParam即可替换路线或刷新模型

queryParams: {
    date_due_gteq: { replace: true },
  },

  queryParams: {
        date_due_gteq: { refreshModel: true },
      },

就是这样。现在,您的网址将与tasks?date_due_gteq=2016-09-01

类似

我在这个问题上度过了一段艰难的时期,但是我已经自己解决了这个问题,我想与你分享。希望你能找到这个有用的。