SORU
23 Ocak 2013, ÇARŞAMBA


Ne biçim bir tarih ng-model kullanıyorsunuz?

Bir giriş olarak tanımlıyorum

<input class="datepicker" type="text" ng-model="clientForm.birthDate" />

Başka bir sayfada görüntülenecek bağlanmış olan:

<tr>
    <th>Birth Date</th>
    <td>{{client.birthDate|date:'mediumDate'}}</td>
</tr>

Sayfa yüklendiğinde doğum tarihi güzel Dec 22, 2009 gibi bir şey olarak biçimlendirilmiş. Benim içinde baktığımda ancak <input> sanırım Tue Dec 22 2009 00:00:00 GMT-0800 (Pacific Standard Time) dizeler Date nesneleri nasıl işler gibi gösterilmiş.

Öncelikle, nasıl söylerim Açısal 12/22/2009 olarak <input> tarih göstermek için mi? ng-model öznitelik içinde |filters uygulamak için görünmüyor olabilir.

İkinci olarak, en kısa sürede düzenleme tarihini bile tutmak içinde özgün biçim, benim diğer metin (<td>) gibi görünmüyor Uygula |date filtre artık; aniden değişiklikler biçimleri için eşleşen giriş textbox. Nasıl |date filtre her zaman geçerli olsun modeli değiştirir?


İlgili sorular:

CEVAP
23 Ocak 2013, ÇARŞAMBA


http://docs.angularjs.org/guide/forms Demo formları kullanan özel doğrulama: http://plnkr.co/edit/NzeauIDVHlgeb6qF75hX?p=preview

Direktif formaters ve ayrıştırıcıları kullanarak ve MomentJS )

angModule.directive('moDateInput', function ($window) {
    return {
        require:'^ngModel',
        restrict:'A',
        link:function (scope, elm, attrs, ctrl) {
            var moment = $window.moment;
            var dateFormat = attrs.moMediumDate;
            attrs.$observe('moDateInput', function (newValue) {
                if (dateFormat == newValue || !ctrl.$modelValue) return;
                dateFormat = newValue;
                ctrl.$modelValue = new Date(ctrl.$setViewValue);
            });

            ctrl.$formatters.unshift(function (modelValue) {
                if (!dateFormat || !modelValue) return "";
                var retVal = moment(modelValue).format(dateFormat);
                return retVal;
            });

            ctrl.$parsers.unshift(function (viewValue) {
                var date = moment(viewValue, dateFormat);
                return (date && date.isValid() && date.year() > 1950 ) ? date.toDate() : "";
            });
        }
    };
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • george sarintzotis

    george sarin

    2 Aralık 2007
  • snookie77

    snookie77

    2 Mart 2006