jQuery UI の日付ピッカー用に角度ディレクティブを作成しました。問題は、日付が選択されたときにディレクティブが入力の ng-model を更新しないことです。理由はありますか?
3 に答える
ngModel
AngularJS は、ディレクティブ内で使用できる対話用の特別なコントローラーを実際に提供します。require: 'ngModel'
ディレクティブ定義に追加するだけです。
これにより、link
関数に 4 番目のパラメーターが与えられます。これは、で要求したコントローラーです。require
この場合は、のインスタンスですngModelController
。$setViewValue
モデルの値を設定するために使用できるメソッドがあります。
app.directive('datepicker', function() {
return {
require: 'ngModel',
link: function(scope, el, attr, ngModel) {
$(el).datepicker({
onSelect: function(dateText) {
scope.$apply(function() {
ngModel.$setViewValue(dateText);
});
}
});
}
};
});
素晴らしい点ngModelController
は、検証とフォーマット (特定の input の場合)、およびコールバックtype
などとの統合を自動的に処理することです。この例ngChange
をチェックしてください:http://jsbin.com/ufoqan/6/edit
@Michelle Tilley と @Jonah は、ディレクティブを ngModel にリンクすることについては正しいのですが、jQuery の代わりに純粋な Angular である datePicker を使用しなかったのはなぜですか?
さて、私はADMdtp
モジュールを表しています。これは、多くの優れたオプションを備えた純粋な AngularJs dateTimePicker です。
- ngModel と完全に同期されているため、dateTimePicker を破棄または更新する必要はありません。
- アドバンスレンジピッカー; 一緒に関連付ける必要があるだけ多くの dateTimePicker を作成し、各 dateTimePicker を破棄または手動で更新する必要はありません。
- パターンを無効にする; すべての週末のように、週または月の任意の日を簡単に無効にすることができます。
- 日替わりで移行。(呪いのオプションで無効にすることができます)
- UNIX形式の日付、日付形式、年、月、日、時、分などの完全な日付の詳細を個別に取得し、完全なデータ属性で取得します。
- ...
<adm-dtp ng-model="date" full-data="date_full"></adm-dtp>