Angular Strap数据 - 分步设置动态

时间:2016-07-25 12:31:11

标签: angularjs timepicker

我尝试设置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'" >

1 个答案:

答案 0 :(得分:0)

我看了一下this doc.并且它似乎没有看到属性的变化 - 它们只被评估一次,所以这就是为什么通过输入来操作<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"> 并不起作用。

我建议的解决方法是在更新分钟步骤时强制渲染timepicker元素:

$timeout

将渲染功能添加到控制器(确保注入$scope.minutesUpdated = function() { $scope.renderTimePicker = true; $timeout(function() { $scope.renderTimePicker = false; }); }; ):

$scope.minutesUpdated()

从视图更改分钟步骤将触发ng-if="!renderTimePicker"功能,它将从视图中删除时间戳(因为我将$scope.renderTimePicker = false;添加到元素中),并在视图后再次将其恢复已呈现(通过在$timeout内重置data-minute-step

请注意,我已将ng-attr-data-minute-step更改为 // start a page PdfDocument.Page page = document.startPage(pageInfo); Canvas c = page.getCanvas(); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(1000, 50); CardView card = new CardView(this); card.setLayoutParams(params); card.setRadius(4f); Bitmap cardBitmap = Utils.loadBitmapFromView(card); c.drawText("tessssssttt", 30, 30, p); c.drawBitmap(cardBitmap, new Rect(0,0,1000,50), new Rect(5, 50, 995, 100), p); document.finishPage(page); ,因为我认为它会使其有效。