如何在angularjs中设置范围滑块的时间?

Posted

技术标签:

【中文标题】如何在angularjs中设置范围滑块的时间?【英文标题】:How to set time in rang slider in angular js? 【发布时间】:2017-10-03 20:37:59 【问题描述】:

我在 Angular js 中使用具有可拖动范围(https://jsfiddle.net/ValentinH/954eve2L/)的滑块进行时间选择。我想在这个滑块中设置时间。所以我的时钟是从 00.00 到 24.00。但我想设置时间间隔为 10 分钟,例如 00.10, 00.20, 00.30, 00.40, 00.50, 01.00, 01.10,01.10

<article>
  <h2>Slider with draggable range</h2>

  <rzslider rz-slider-model="slider_draggable_range.minValue" rz-slider-high="slider_draggable_range.maxValue" rz-slider-options="slider_draggable_range.options"></rzslider>
</article>

// Slider with draggable range
$scope.slider_draggable_range = 
  minValue: 1,
  maxValue: 8,
  options: 
    ceil: 10,
    floor: 0,
    draggableRange: true
  
;

$scope.slider_draggable_range = 
  minValue: $scope.fromTime,
  maxValue: $scope.toTime,
  options: 
    ceil: 24,
    floor: 0,
    draggableRange: true,
    showTicks: true,
    hideLimitLabels: true,
    hourBase: function(value) 
      return (((value > 1 && value < 12) || value > 25) ? '0' : '') + (value + 22) % 24 + '00 hrs'
    ,
    steps: pules()
  
;

我无法发布我的完整代码。因为这是不可能的。我正在按小时选择时间,例如 10.00、11.00、12.00 ......但现在我想从 1.10、1.20、1.30 开始计时。

当我静态使用minValue: 4.40时它会指向4,当我设置4.60时它会指向5,所以它转换成整数值。不是点数。

$scope.slider_draggable_range = 
  minValue: 4.40,
  maxValue: 7,
  options: 
    ceil: 24,
    floor: 0,
    draggableRange: true
  
;

ceil:24 限制, 地板:起点, 最小值:绘制起点 响了, 最大值:绘制范围的终点

请分享您的想法。这个问题对我来说很重要,你的回答很有价值。

【问题讨论】:

【参考方案1】:

如果我理解正确,您想要的东西可以使用stepsArray 选项来实现。

想法是使用选项自己设置选项。这样您就可以将其设置为非整数。

(在http://angular-slider.github.io/angularjs-slider/中搜索演示Slider with Alphabet

像这样(不是这样,只是一个例子):

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
    
  ;
);

function getRange() 
  var arr = [];
  var d = new Date(2017, 1, 1);
  for (var i = 0; i < (6 * 24); 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;
* 
  margin: 0;
  padding: 0;


body 
  font-family: 'Open Sans', sans-serif;
  color: #1f2636;
  font-size: 14px;
  padding-bottom: 40px;


header 
  background: #0db9f0;
  color: #fff;
  margin: -40px;
  margin-bottom: 40px;
  text-align: center;
  padding: 40px 0;


h1 
  font-weight: 300;


h2 
  margin-bottom: 10px;


.wrapper 
  background: #fff;
  padding: 40px;


article 
  margin-bottom: 10px;


.tab-pane 
  padding-top: 10px;


.field-title 
  width: 100px;


.vertical-sliders 
  margin: 0;


.vertical-sliders>div 
  height: 250px;
<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>

【讨论】:

这是正确的,但是想设置10分钟的间隔,比如开始00.00、00.10、00.20、00.30、00.40、00.50、1.00、1.10、1.20、1.30、1.40、1.50、2.00等在。我的点击是 00.00 到 24.00(23.50 到 00.00)。 我的时钟是 00.00 到 24.00(00.00,00.10............12.00,12.10............13.00...... .23.50 和 00.00) 我认为你可以从这里获取它(这只是一个例子):) 但无论如何,我为你做了。看看吧。 我们可以添加 -4 和 +4。并制作 32Hrs 滑块。比如 8:10,8:20.8:30....12:00........24:00,00:10,00:20,3:50,4:00。平均从 8 点钟和 4 点钟开始。它涵盖了三天。第一天晚上 4 小时和第三天晚上 4 小时早上 4 点钟 你能看到这个链接吗?谢谢***.com/questions/45350964/…

以上是关于如何在angularjs中设置范围滑块的时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jquery 滑块中设置最小值和最大值?

如何在 AngularJS 指令范围中设置默认值?

如何限制 jQuery UI 滑块的范围?

如何在 NHRangeSlider 中设置以前的值?

如何在标签中放置滑块值?

如何使范围滑块的左侧与滑块右侧的颜色不同?