javascript – 在Angular Js的RZSlider中制作32小时范围?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在Angular Js的RZSlider中制作32小时范围?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4793字,纯文字阅读大概需要7分钟。
内容图文
我必须实现一个RZSlider,间隔10小时,32小时.我也在使用日期选择器.所以我将这个日期选择器和时间滑块设置为一个html页面.如果我登陆此页面,那么今天应默认选择8小时窗口,平均-4小时和4小时当前日期.例如:如果我在7月23日23:00登陆此页面,那么范围应该是19:00到3:00.但在这种情况下,3点到了7月24日.我希望这个滑块像日期选择器一样随着时间的推移.
starting from 8:10,8:20,8:30,8:40,8:50,9:10…..12:10,12:20…….23:10,23:20,23:30,23:40,23:50,00:00,00.10,00:20,00:30,00:40,00:50,1:00…….4:00 End To.
我已经为32小时范围实现了一些逻辑,但是在某些情况下这是失败的,然后滑块将会中断并且会出现兼容问题.
我无法显示我的代码,因为代码依赖于其他代码.
var app = angular.module('rzSliderDemo', ['rzModule', 'ui.bootstrap']);
app.controller('MainCtrl', function($scope, $rootScope, $timeout) {
var arr = getRange().map(n => {
return {
value: n,
legend: n
};
});
$scope.slider = {
minValue: '10.50',
maxValue: '14.20',
options: {
showTicks: true,
stepsArray: arr,
draggableRange: true,
}
};
});
function getRange() {
var arr = [];
var d = new Date(2017, 1, 1);
for (var i = 0; i < (6 * 28); i++) {
d.setMinutes(d.getMinutes() + 10);
arr.push(leadZero(d.getHours()) + '.' + leadZero(d.getMinutes()));
}
return arr;
}
function leadZero(time) {
return time < 10 ? '0' + time : time;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://rawgit.com/rzajac/angularjs-slider/master/dist/rzslider.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.js"></script>
<script src="https://rawgit.com/rzajac/angularjs-slider/master/dist/rzslider.js"></script>
<div ng-app="rzSliderDemo">
<div ng-controller="MainCtrl" class="wrapper">
<header>
<h1>AngularJS Touch Slider</h1>
</header>
<article>
<h2>Simple slider</h2>
Model:
<input type="text" ng-model="slider.minValue" />
<input type="text" ng-model="slider.maxValue" />
<br/>
<rzslider rz-slider-model="slider.minValue" rz-slider-high="slider.maxValue" rz-slider-options="slider.options"></rzslider>
</article>
</div>
</div>
在这个例子中,它将在第二天4小时,但不会到达之前的日期小时.
解决方法:
我并不完全清楚你所追求的是什么,但希望这会让你走上正轨.
我正在使用Moment来更轻松地处理日期.
通过在范围值中包含日期,它使值唯一,因此我们可以设置初始开始和结束时间而不会产生歧义.
然后,当您准备好对值进行某些操作时,可以使用Moment将所选值转换回日期对象.
var app = angular.module('rzSliderDemo', ['rzModule', 'ui.bootstrap']);
app.controller('MainCtrl', function($scope, $rootScope, $timeout) {
var startDate, endDate, startTime, endTime;
var currentDate = moment();
var timeData = getRange();
$scope.localTime = timeData.currentTime; // actually start of this hour
var arr = timeData.times.map(n => {
return {
value: n.value
//legend: n.value
};
});
$scope.slider = {
minValue: $scope.localTime.clone().subtract(4, "hours").format('MMM Do hh:mma'),
maxValue: $scope.localTime.clone().add(4, "hours").format('MMM Do hh:mma'),
options: {
showTicks: true,
stepsArray: arr,
draggableRange: true,
}
};
});
function getRange(currentDate) {
var arr = [];
var totalHourRange = 28;
var currentTime = moment(); // current date and time using Moment
// set current time to beginning of the hour
currentTime.minute(0);
// clone date and substract 1/2 total range to get start point
var tmpTime = currentTime.clone();
tmpTime.subtract(totalHourRange / 2, 'hours');
// offset is the number of minutes from the current point
for (var i = -((6 * totalHourRange) / 2); i <= (6 * totalHourRange) / 2; i++) {
arr.push({value: tmpTime.format('MMM Do hh:mma'), offset: i * 10});
tmpTime.add(10, 'minutes');
}
return { times: arr, currentTime: currentTime, totalHourRange: totalHourRange };
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://rawgit.com/rzajac/angularjs-slider/master/dist/rzslider.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.js"></script>
<script src="https://rawgit.com/rzajac/angularjs-slider/master/dist/rzslider.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<div ng-app="rzSliderDemo">
<div ng-controller="MainCtrl" class="wrapper">
<header>
<h2>AngularJS Touch Slider</h2>
</header>
<article>
<h4>Local time (beginning of the hour): <em>{{localTime.format('MMMM Do YYYY, h:mm a')}}</em></h4>
<br />
Model:
<input type="text" ng-model="slider.minValue" />
<input type="text" ng-model="slider.maxValue" />
<br />
<br />
<rzslider rz-slider-model="slider.minValue" rz-slider-high="slider.maxValue" rz-slider-options="slider.options"></rzslider>
</article>
</div>
</div>
内容总结
以上是互联网集市为您收集整理的javascript – 在Angular Js的RZSlider中制作32小时范围?全部内容,希望文章能够帮你解决javascript – 在Angular Js的RZSlider中制作32小时范围?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。