5

これはおそらく簡単な質問ですが、この datepickerに問題があります。問題は、形式をdd/mm/yyyywithdata-date-format属性に設定することです。ただし、ng-model値を確認すると、次のようになります。Wed Jul 17 2013 00:00:00 GMT+0000 (Greenwich Standard Time)

私が欲しいのは、dd/mm/yyyyフォーマットにバインドすることです。

どうすればこれを修正できますか?

これが私のコードです:

<label for="inputDateFrom">Frá</label>
<div class="control-group input-append">
    <input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd/mm/yyyy" bs-datepicker>
    <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button>
</div>

更新 18.07.13:

rGil の回答によると、$scope.$watch を使用しようとしました。正常に動作しますが、最初に (getBooking() サービス関数から) 正しい日付を取得し、次に現在の日付に変更しますが、これは日付ではありません。

JavaScript コードは次のとおりです。

$scope.$watch('booking.Booking.DateFrom', function(v){ // using the example model from the datepicker docs
    $scope.booking.Booking.DateFrom = moment(v).format();
    alert(moment(v).format());
});

$scope.$watch('booking.Booking.DateTo', function(v){ // using the example model from the datepicker docs
    $scope.booking.Booking.DateTo = moment(v).format();
    alert(moment(v).format());
});

// Sækjum staka bókun
if(bookingID != null) {
    BookingService.getBooking(bookingID).then(function(data) {
        $scope.booking = data.data;
        $scope.booking.Booking.DateFrom = moment($scope.booking.Booking.DateFrom);
        $scope.booking.Booking.DateTo = moment($scope.booking.Booking.DateTo);
    });
}

次に、私のHTMLは次のとおりです。

<label for="inputDateFrom">Frá</label>
<div class="control-group input-append">
        <input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd-mm-yyyy" bs-datepicker>
        <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button>
</div>

<label for="inputDateTo">Til</label>
<div class="control-group input-append">
        <input type="text" ng-model="booking.Booking.DateTo" data-date-format="dd-mm-yyyy" bs-datepicker>
        <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button>
</div>
4

3 に答える 3

10

AngularStrap のソース コードを調べたところ、(文書化されていないように見える) 属性date-typeを "Date" 以外の任意の値 (例: String)bs-datpickerに設定すると、選択した日付が日付オブジェクトとして返されなくなり、問題が解決することがわかりました。したがって、この場合は次のようになります。

<input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd/mm/yyyy" date-type="string" bs-datepicker>

AngularStrapv0.7.4およびv0.7.5

于 2013-11-13T09:09:33.460 に答える
6

これは、プラグインなしで簡単に実行できます。この投稿を使用すると、正しいフォーマットで $scope 変数を作成できます。

例:

$scope.$watch('datepicker.date', function(v){ // using the example model from the datepicker docs
    var d = new Date(v);
    var curr_date = d.getDate();
    var curr_month = d.getMonth() + 1; //Months are zero based
    var curr_year = d.getFullYear();
    $scope.modDate = curr_date + "/" + curr_month + "/" + curr_year;
    console.log($scope.modDate)
})

フォークされたデモ- コンソールを開く

于 2013-07-16T04:23:39.040 に答える
2

AngularJS を使用して、よりエレガントな方法でそれを行う方法があります。日付フィルター Angular を使用するだけです。このような:

$filter('date')(date, "yy/MM/yyyy", date.getTimezoneOffset())

$filter('date') は、引数、日付、テンプレート、およびタイムゾーンを受け取る angularjs フィルターを取得し、適切にフォーマットされた文字列を返します。

08/03/2016
于 2016-03-08T15:13:28.467 に答える