我一直在使用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对象。
答案 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
我在这个问题上度过了一段艰难的时期,但是我已经自己解决了这个问题,我想与你分享。希望你能找到这个有用的。