2016-07-25 10 views
1

私はdata-minute-step={{somevalue}}を設定しようとしましたが、値を変更してもピッカーは更新されません。それについて何かできますか?
アングルストラップdata-minute-step dynamicを設定

例:

<input id="timetable.amountPerLeson" 
     class="form-control" 
     type="number" 
     step="15" 
     placeholder="45 min" 
     ng-model="durationStep"> 

<input id="timetable.start" 
     class="form-control" 
     type="text" 
     placeholder="date" 
     ng-model="slot.startHour" 
     bs-timepicker 
     data-time-format="HH:mm" 
     data-length="1" 
     data-minute-step="{{durationStep}}" 
     data-arrow-behavior="picker" 
     ng-show="slot.name === 'Hours'" > 
+0

私の答えをもう一度削除しましたが、ビュー内のどこでも '{{stepSize}}'(属性ではない)を印刷して入力を更新するとどうなりますかを教えてください。 –

+0

はい、レンダリングされます。つまり、DOMで更新されるということです。 – Emanuel

答えて

0

は私がsource codeに見ていたし、属性の変化を見ていないようだ - 彼らが評価されています。これは私が持っているものである

<input type="number" ng-model="stepSize">  
<input bs-timepicker data-minute-step="{{stepSize}}"> 

一度しかないので、入力を介してdata-minute-stepを詠んでも動作しません。

私が提案できる回避策は、数分のステップを更新するとき、timepicker要素のレンダリングを強制することです:

$scope.minutesUpdated = function() { 
    $scope.renderTimePicker = true; 
    $timeout(function() { 
     $scope.renderTimePicker = false; 
    }); 
}; 

<input id="timetable.amountPerLeson" class="form-control" type="number" step="15" placeholder="45 min" 
     ng-model="durationStep" ng-change="minutesUpdated()"> 

<input id="timetable.start" class="form-control" type="text" placeholder="date" 
     ng-model="slot.startHour" 
     bs-timepicker data-time-format="HH:mm" data-length="1" ng-attr-data-minute-step="{{durationStep}}" 
     data-arrow-behavior="picker" ng-show="slot.name === 'Hours'" ng-if="!renderTimePicker"> 

コントローラ(必ず$timeoutを注入してください)にレンダリングする機能を追加します。

ビューから分ステップを変更すると、$scope.minutesUpdated()関数がトリガーされ、ビューに時間ピッカーが削除されます(要素にng-if="!renderTimePicker"が追加されたため)。ビューがレンダリングされた後ed $timeoutの中に$scope.renderTimePicker = false;をリセットすることによって)。

data-minute-stepng-attr-data-minute-stepに変更したのは、それが機能すると思われるためです。