Kendo DateRangePicker中的动态名称设置技术问询
实现Kendo DateRangePicker的动态名称设置
嘿,我来帮你搞定Kendo DateRangePicker的动态名称设置问题!其实分两种场景来处理就好,一种是初始化时就动态生成名称,另一种是初始化后再修改名称,我给你详细说说:
初始化时动态设置范围名称
如果你的范围名称需要在组件初始化前就确定(比如根据用户语言、系统配置动态生成),可以先把名称存在变量里,再用计算属性名来构建ranges对象,这样就能实现动态命名了:
// 这里可以根据业务逻辑动态生成名称,比如从i18n配置、后端接口获取 const dynamicRangeLabels = { today: '今日', yesterday: '昨日', last7Days: '最近7天', last30Days: '最近30天', thisMonth: '本月', lastMonth: '上月' }; // 构建带动态名称的ranges对象 const dynamicRanges = { [dynamicRangeLabels.today]: [moment(), moment()], [dynamicRangeLabels.yesterday]: [moment().subtract('days', 1), moment().subtract('days', 1)], [dynamicRangeLabels.last7Days]: [moment().subtract('days', 6), moment()], [dynamicRangeLabels.last30Days]: [moment().subtract('days', 29), moment()], [dynamicRangeLabels.thisMonth]: [moment().startOf('month'), moment().endOf('month')], [dynamicRangeLabels.lastMonth]: [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')] }; // 初始化DateRangePicker $('#range').daterangepicker({ ranges: dynamicRanges, startDate: moment().subtract('days', 6), // 示例默认起始日期 endDate: moment() // 示例默认结束日期 // 其他配置项... });
初始化后动态修改范围名称
如果需要在组件已经初始化完成后,再动态修改某个或多个范围的名称,可以通过获取组件实例,修改ranges属性后刷新UI来实现:
// 先获取DateRangePicker的实例 const daterangeInstance = $('#range').data('daterangepicker'); // 示例:把"Today"改成"今日" const oldRangeName = 'Today'; const newRangeName = '今日'; // 先保存旧名称对应的日期范围值 const rangeDates = daterangeInstance.ranges[oldRangeName]; // 删除旧的键名 delete daterangeInstance.ranges[oldRangeName]; // 添加新的键名和对应的日期范围 daterangeInstance.ranges[newRangeName] = rangeDates; // 刷新组件视图和日历,让新名称生效 daterangeInstance.updateView(); daterangeInstance.updateCalendars();
额外小提示
如果是多语言场景,推荐把范围名称存在语言包配置里,比如用i18n.t('range.today')这种方式来获取动态名称,这样切换语言时直接更新语言包,再重新初始化或修改组件即可~
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

