Angularjs - güncel tarihi göster


128

Angularjs'de bir görünüm aldım ve sadece geçerli tarihi (formatlanmış) görüntülemeye çalışıyorum. Böyle bir şeyin <span>{{Date.now() | date:'yyyy-MM-dd'}}</span>güncel tarihi göstermesi gerektiğini düşündüm .


Olurdu .. ama bilmiyor Date.now().
putvande

2
Yani önce denetleyicide değişkeni mi oluşturmalıyım? Şu anki tarih gibi basit bir şeyin daha kolay olacağını düşündüm :)
Evo_x

1
Date.now()nodeJS işlevi
Nay

Yanıtlar:


229

Önce denetleyicinizde bir tarih nesnesi oluşturmanız gerekir:

kontrol:

function Ctrl($scope)
{
    $scope.date = new Date();
}

görünüm:

<div ng-app ng-controller="Ctrl">
    {{date | date:'yyyy-MM-dd'}}
</div>

JSFiddle örneği

Açısal Tarih Filtresi Ref


hi @sloth Geçerli sistem saatini görüntülemek için cgi'yi kullanmak istiyorum. Ben muhtemelen bunu ya mümkün sayesinde olduğunu nasıl?
bleyk

44

Tarihi yazdırmak istediğiniz her seferinde geçerli kapsama bir tarih nesnesi eklemek istemiyorsanız, bunu bir filtre ile de yapabilirsiniz:

.filter('currentdate',['$filter',  function($filter) {
    return function() {
        return $filter('date')(new Date(), 'yyyy-MM-dd');
    };
}])

ve sonra sizin görüşünüzde:

<div ng-app="myApp">
    <div>{{'' | currentdate}}</div>
</div>

5
O zaman bir yönerge de yapabilir
arg20

23

şablon

<span date-now="MM/dd/yyyy"></span>

Direktif

.directive('dateNow', ['$filter', function($filter) {
  return {
    link: function( $scope, $element, $attrs) {
      $element.text($filter('date')(new Date(), $attrs.dateNow));
    }
  };
}])

Erişemediğiniz Çünkü Date(bir satır içi çözüm için) bir şablonda direcly nesneyi, bu Yönerge için opteted. Ayrıca Denetleyicilerinizi temiz tutar ve yeniden kullanılabilir.


19

Bunu bıyık ifadesi ( {{Date.now() | date:'dd.MM.yyyy HH:mm:ss'}}) ile yapabilirsiniz. Bu ifadeyi değerlendirmek istediğiniz kapsama Date nesnesini atamanız yeterlidir.

İşte jsfiddle örneği: jsfiddle

Ancak değeri otomatik olarak güncellemesini beklemeyin. Bu değer açısal olarak izlenmez, bu nedenle her güncellenmesini istediğinizde (örneğin $ aralığı ile) özeti tetiklemeniz gerekir ... bu da kaynak israfıdır (ve ayrıca belgelerde "tavsiye edilmez"). Elbette, yalnızca alt kapsamla uğraşmak için yönergeler / denetleyicilerle kombinasyon kullanabilirsiniz (her zaman örneğin rootScope'tan daha küçüktür ve özet daha hızlı olacaktır).


9

Birinin buna rastlaması durumunda sadece 2 sentim :)

Burada önerdiğim şey, mevcut cevapla aynı sonuca sahip olacak, ancak kontrol cihazınızı burada bahsettiğim şekilde yazmanız önerildi.

İlk "Not" a referans kaydırın (Maalesef, bağlantısı yok)

İşte önerilen yol:

Denetleyici:

var app = angular.module('myApp', []);   
app.controller( 'MyCtrl', ['$scope', function($scope) {
    $scope.date = new Date();
}]);

Görünüm:

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    {{date | date:'yyyy-MM-dd'}}
  </div>
</div>

2

AngularJS'de moment()ve format()işlevlerini kullanabilirsiniz .

Denetleyici:

var app = angular.module('demoApp', []);   
app.controller( 'demoCtrl', ['$scope', '$moment' function($scope , $moment) {
$scope.date = $moment().format('MM/DD/YYYY');
}]);

Görünüm:

<div ng-app="demoApp">
  <div ng-controller="demoCtrl">
    {{date}}
  </div>
</div>

2
<script type="text/javascript">
var app = angular.module('sampleapp', [])
app.controller('samplecontrol', function ($scope) {
   var today = new Date();
   console.log($scope.cdate);
   var date = today.getDate();
   var month = today.getMonth();
   var year = today.getFullYear();
   var current_date = date+'/'+month+'/'+year;
   console.log(current_date);
});
</script>


1

Görünüm

<div ng-app="myapp">
{{AssignedDate.now() | date:'yyyy-MM-dd HH:mm:ss'}}
</div>

kontrolör

var app = angular.module ('uygulamam', [])

app.run(function($rootScope){
    $rootScope.AssignedDate = Date;
})

1

Filtre kullanarak @Nick G'ye benzer bir çözüm , ancak parametreyi anlamlı hale getirin:

relativedateDiff olarak verilen parametreye göre tarihi geçerli tarihe göre hesaplayan adlı bir filtre uygulayın . Sonuç olarak (0 | relativedate)bugün (1 | relativedate)demektir ve yarın demektir.

.filter('relativedate', ['$filter', function ($filter) {
  return function (rel, format) {
    let date = new Date();
    date.setDate(date.getDate() + rel);
    return $filter('date')(date, format || 'yyyy-MM-dd')
  };
}]);

ve html'niz:

<div ng-app="myApp">
    <div>Yesterday: {{-1 | relativedate}}</div>
    <div>Today: {{0 | relativedate}}</div>
    <div>Tomorrow: {{1 | relativedate}}</div>
</div>

1

Yapmanın başka bir yolu ise: Controller'da, aşağıda gösterildiği gibi geçerli tarihi tutmak için bir değişken oluşturun:

var eventsApp = angular.module("eventsApp", []);
eventsApp.controller("EventController", function EventController($scope) 
{

 $scope.myDate = Date.now();

});

HTML görünümünde,

<!DOCTYPE html>
<html ng-app="eventsApp">
<head>
    <meta charset="utf-8" />
   <title></title>
   <script src="lib/angular/angular.js"></script>
</head>
<body>
<div ng-controller="EventController">
<span>{{myDate | date : 'yyyy-MM-dd'}}</span>
</div>
</body>
</html>

@Billa, kod parçamı güncelledim. Umarım şimdi daha açıklayıcıdır.
Sunita
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.