2016-07-25 3 views
1

Я попытался установить data-minute-step={{somevalue}}, но если я изменю значение, он не обновит сборщик. Могу ли я что-то сделать?
Угловой ремень данных-минутный набор динамический

Пример:

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

Это то, что у меня есть:

<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 и это, кажется, не следить за изменениями на атрибутах - они оцениваются только один раз, поэтому для этого нужно перетащить data-minute-step с помощью входных данных doens't.

Обходной я могу предложить, чтобы заставить визуализации элемента timepicker, когда вы обновляете минут шаги:

<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 = function() { 
    $scope.renderTimePicker = true; 
    $timeout(function() { 
     $scope.renderTimePicker = false; 
    }); 
}; 

Изменение шага минут от представления вызовет функцию $scope.minutesUpdated(), она удалит timepicker из представления (потому что я добавил ng-if="!renderTimePicker" в элемент) и вернул его снова после просмотра ed (Сбрасывая $scope.renderTimePicker = false; внутри $timeout).

Обратите внимание, что я сменил data-minute-step на ng-attr-data-minute-step, потому что я думаю, что это сработает.

Смежные вопросы