我目前正在尝试使用instantsearch.js“rangeslider”小部件来创建从我的索引数据中出生日期的年龄范围滑块。 检查了文档,似乎没有转换数据功能,我可以用它将出生日期转换为数字年龄数字,例如“点击”小部件可以执行的操作。阿尔戈利亚即时搜索年龄范围根据出生日期
我想到的一种方法是在索引中创建一个年龄栏,并且每天运行一个cron作业以更新出生日期的每个记录库的年龄列,但这看起来不是一个优雅的解决方案。
我想知道是否有任何解决方法或现有解决方案的这种情况?
与Laravel as backend(贷Jerska)解决方案:
public function getAlgoliaRecord()
{
/**
* Load the categories relation so that it's available
* in the laravel toArray method
*/
$this->dob_timestamp = strtotime('01-01-2100') - strtotime($this->dob);
return $this->toArray();
}
在前端:
function _calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
search.addWidget(
instantsearch.widgets.rangeSlider({
container: '#age',
attributeName: 'dob_timestamp',
tooltips: {
format: function(formattedValue) {
var dob = new Date((4102444800-formattedValue)*1000);
var age =_calculateAge(dob);
return age;
}
}
})
);
CSS:
.ais-range-slider--value{ display:none; }
从未想过使用时间戳,谢谢你的解决方案的工作精彩! 用解决方案更新了我的问题。 – user3364008
@ user3364008我很高兴这为你工作。 :) – Jerska