2016-12-02 9 views
1

Angular Bootstrap DatePickerのminModeを動的に設定する方法を教えてください。uib-datepicker-popup with dynamic minemode

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

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

それはうまく動作しますが、minMode変化や日付ピッカーが再び開いたときに、私が持っているコントローラー

で:

私はそれを得た唯一の方法は、次のようにしました$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

+0

を使用してminModeプロパティは –

+0

ありがとう..かなりのだろうと、plunkrを追加することを変更することができます。私は編集しました –

答えて

1

minMode値を正しく設定する

日付ピッカーにオプションを配置して後でこれらのオプションをボタンで変更するため、コントローラーにoptionsオブジェクトを定義し、両方の場所で参照する必要があります。コントローラ

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

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

今すぐあなたのng-click表現

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

Updated plunk

+0

ありがとう!解決策を見つけるのを助けます。ボタンをクリックすると、オプションオブジェクト全体を変更するメソッドを呼び出さなければなりませんでした。あなたが示唆したことをしたとき、datepickerはminモードを変更しますが、他のモードでクリックすると再び変更されません。理由はわかりません。 –

+0

'minMode'を正しく変更したかどうかを確認して、オプションオブジェクトをコンソールに出力してみてください。 – svarog

+1

これで何が起こるのか分かりました。あなたの解決策は正しいです。私はそれが働いていないと思った。なぜなら、あなたが「年」を選択すると、例のために、そして「日」の後に、日付ピッカーが年の選択で最初に開くからです。しかし、今私は1年を選ぶと1ヶ月と1日を選ぶことができます。どうもありがとうございました。 –

0

あなたの代わりにプロパティを機能を使用してみましたか?この

HTML

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

のようにコントローラ

$scope.getMinMode = function(){ 
    return 'day'; //you can change this for any required logic that specifies your minMode 
}; 

関数が再評価され、この方法で角度たびは$ダイジェスト実行して、あなたは同じ文字列を毎回minModeを取得します変更

+0

はい私はこれを試しても動作しません。 –

関連する問題