私はangular-uiの日付ピッカーを使用していますが、日付ピッカーの初期状態を除いて、すべてが実際に正常に機能しています。私が日付を選んだ後、それはうまく見えます。下記参照:
初期状態
ピッカーで日付を選択した後
つまり、最初のケースでは日付オブジェクトの圧縮バージョンを取得し、日付を選択した後にフォーマットしていることは明らかです。
マークアップ
<input type="text" class="form-control"
id="birthday"
datepicker-options="datePickerOptions"
datepicker-popup="{{format}}"
data-ng-model="birthday"
data-is-open="opened"
data-ng-required="true"
data-close-text="Close"/>
<span class="input-group-btn">
<button type="button"
class="btn btn-default"
data-ng-click="open($event)">
<i class="fa fa-calendar"></i>
</button>
</span>
コントローラー
var today = $scope.today = function today() {
$scope.birthday = $scope.client.birthday || new Date();
};
today();
$scope.clear = function clear() {
$scope.dt = null;
};
$scope.open = function($event) {
$event.preventDefault();
$event.stopPropagation();
$scope.opened = true;
};
$scope.format = 'MMM d, yyyy';
$scope.datePickerOptions = {
'show-weeks': false
};
大したことではありませんが、モデル(ドキュメントごとに日付オブジェクトである必要があります)が$scope.format
厳格な日付オブジェクトではなく、まず始めに。また、違いがわかりませんが、この日付ピッカーはモーダル内にあります。助けてくれてありがとう!
[〜#〜]更新[〜#〜]
これを経験しているのは私だけではないようで、angular 1.3。 https://github.com/angular-ui/bootstrap/issues/2659の使用に関連しています。
どこで/どこでも解決策が長く、ディレクティブなどで処理されることがわかったので、私はこの短い解決策を好みます
birthday = $filter('date')(new Date(), "MMM dd, yyyy");
注:注入することを忘れないangular組み込み$ filterコントローラへのサービス
angular.module('app').controller("yourController",
['$filter' function($filter){
/* your code here */
birthday = $filter('date')(new Date(), "MMM dd, yyyy");
/* your code here */
}]);
お役に立てれば。
bootstrap UIはAngularJS 1.3.xバージョンと互換性がありません。
このplunkrは私のために問題を解決します http://plnkr.co/edit/L9u12BeeBgPC2z0nlrLZ?p=preview
// this is the important bit:
.directive('datepickerPopup', function (){
return {
restrict: 'EAC',
require: 'ngModel',
link: function(scope, element, attr, controller) {
//remove the default formatter from the input directive to prevent conflict
controller.$formatters.shift();
}
}
});
Githubチケットも参照してください https://github.com/angular-ui/bootstrap/issues/2659#issuecomment-60750976
Premchandra Singhの回答を改善するには、angular $ filterサービスを使用して機能しますが、将来の更新にフィルターを適用するには、日付フィールドにウォッチを追加する必要があります。
$scope.myDate = $filter('date')(new Date(), 'dd.MM.yy');
$scope.$watch('myDate', function (newValue, oldValue) {
$scope.myDate = $filter('date')(newValue, 'dd.MM.yy');
});
Githubの問題で説明されているもの以外に、私にとってうまくいった別の回避策は、日付オブジェクトではなく、ミリ秒単位のエポック時間でモデルを初期化することです、たとえば:
$scope.dt = new Date().getTime();