2016-04-12 11 views
0

イオン範囲を使用して15分ステップで時間を設定しようとしています。 イオンレンジは、min、max、step、valueの共通レンジ入力と同じように機能します。angularjs - 範囲スライダを使用して時間を設定する

はここレンジhtmlコードです:

<div class="item range"> 
    <input type="range" min="0.15" max="12" value="0" step="0.15" ng-model="TimeValue" ng-change="setTime(TimeValue)"> 
</div> 

そして、ここで私は変化に呼んでいる機能です:

$scope.setTime = (value) -> 
    $scope.hours = Math.floor(value/0.6); 
    $scope.minutes = value - ($scope.hours * 0.6); 

残念ながら、これが機能していません。

私が達成しようとしているのは、0.15(分)のステップを持つスライダで、0.6に達した時点で自動的に1時間を作成し、1.15(時)などから再開するというものです。

私はここでこの答えに従っています:using ionic range to set months and yearsですが、これは何年も何ヶ月もの間で計算が異なります。

ここでは簡単のデモです:、http://codepen.io/anon/pen/eZVPRv?editors=1010

+0

時間と分が設定されているのが分かります。 – Dreamweaver

+0

スライドすると時間と分が設定されますが、値(特に分)が間違っています。最初のステップ(1時間まで)は正しいですが、0.15000000002 - 0.30000000004 - 0.45000000007などになり、連続的に増加します。これは遅れにつながる可能性があり、私はこれが本当に正確であることが必要です。 – Nick

答えて

1

以下のコードバディを使用して、あなたが

angular.module('ionicApp', ['ionic']) 
.controller('MyCtrl', ['$scope', function($scope){  
    $scope.setTime = function (value) { 
    $scope.hours = Math.floor(value/0.6); 
    if(($scope.TimeValue % 0.6) == 0){ 
    $scope.minutes = 0; 
    }else{ 
     if($scope.TimeValue <= .6){ 
     $scope.minutes = Math.round((value - ($scope.hours))*100); 
     }else{ 
     value = Math.round((value - ($scope.hours * .6))*100); 
     $scope.minutes = value; 
     } 
    } 
    } 
    $scope.TimeValue = 0.15; 
}]) 

needed-何本があった願っています:http://codepen.io/anon/pen/eZVPRv?editors=1010

EDIT

新しいデモ計算の問題は、ここでそれを確認してください - http://codepen.io/himanshuapril1/pen/eZVPXe?editors=1010

+0

これはほぼ完璧ですが、 "デフォルト値"にはまだいくつかの問題があります。あなたの答えを選択するよりも:) ありがとうございます – Nick

+1

どのようにあなたのデフォルト値を表示したいですか? –

+0

ここにあなたはまだ私がまだ問題があるのを見ることができます:http://codepen.io/anon/pen/qZxgVY 基本的に、私はスライダにも値を追加することができますが、適切に時間 – Nick

関連する問題