如何动态设置Angular Bootstrap Datepicker的minMode?

我获得它的唯一方法是:

<input type="text" ng-model="myDate"
       uib-datepicker-popup="{{datepickerFormat}}"
       datepicker-options="{'minMode': minMode}"/>


在控制器中

...
$scope.minMode='day';


它工作正常,但是当minMode更改并且datepicker重新打开时,我在浏览器控制台中出现$compile:nonassignNon-Assignable错误。所以我想做些类似的事情:

<input type="text" ng-model="myDate"
       uib-datepicker-popup="{{datepickerFormat}}"
       min-mode="minMode"/>


但是不幸的是,它不再起作用了。

Angular version: 1.5.9
Bootstrap version: 3.3.7
angular-bootstrap version: 1.2.5


See in Plunker

最佳答案

您没有正确放置minMode

因为您将选项放置在日期选择器中,然后又使用按钮更改了这些选项,所以需要在控制器中定义该options对象,并在两个位置都引用该对象。

<div class="input-group">
    <input type="text"
        ng-model="myDate"
        is-open="showDatePicker"
        uib-datepicker-popup="mm-dd-yyyy"
        datepicker-options="options"/>
</div>


在控制器中

$scope.options = {'showWeeks': false, 'minMode': 'month'};


现在,您可以使用minMode表达式更改该ng-click属性

<button ng-click="options.minMode = 'day'" class="btn">Day</button>
<button ng-click="options.minMode = 'month'" class="btn" >Month</button>


Updated plunk

07-26 00:15