Angularjs - ng-repeat - przeladowanie jednego z Div-ów

Odpowiedz Nowy wątek
2015-02-18 11:03
ne0
0

Hej,

mam prostą listę: imie i data. wyświetlam ją za pomocą angular-a i ng-repeat.

<div ng-repeat="s in data">
<div id="name">{{s.name}}</div>
<div id="date">{{s.date}}</div>
</div>

no i chciałbym teraz za pomocą javascript robić update tego czasu: za pomocą biblioteki "moment.js" wyświetlam nie "2014-05-05 15:00", a: "10 hours ago", albo: "48 days ago" etc.
No i jak mam np.: "3 minutes ago" i ktoś siedzi długo na stronie, no to ten czas powinien się automatycznie zmienić, ale nie chce na nowo wyświetlać na nowo całej tabeli, tylko interesuje mnie zmiana samego czasu... tego jednego konkretnego div-a. może mi ktoś powiedzieć jak mam się za to zabrać?


Pomogłem? To dobrze :)
edytowany 1x, ostatnio: ne0, 2015-02-18 11:08

Pozostało 580 znaków

2015-02-18 13:15
1

$interval(function(){
$scope.data[2].date = new date
tu robisz koda aktualizujący model a reszte ztobi anuglar
},10000)

edytowany 3x, ostatnio: Szczery, 2015-02-18 13:16

Pozostało 580 znaków

2015-02-18 13:17
ne0
0

No ale jak to robię?

Wiem jak zrobić żeby automatycznie np. co 10 sekund przeładował mi stronę... według tego co do tej pory przeczytałem nie muszę nic wysyłać jakby do "widoku" bo angular zrobi to za mnie ("zoorientuje" się że DOM się zmienił i trzeba na nowo wyświetlić) ale nie wiem jak to osiągnąć... mam w tej funkcji co podałeś przelecieć jeszcze raz całą tablicę i aktulizować ten czas który wyświetlam? Tak to mam zrobić?

Mam jeszcze jeden problem z którym nie wiem jak sobie poradzić. Mianowicie u mnie ta wartość datowa wygląda tak: 2014-05-05T12:20:20 no i nie wiem jak to zrobić bo on tego nie jest w stanie przeczytać i zmienić.

EDIT:

 $interval(function () {
            if ($scope.dane != null) {

                $.each($scope.dane, function (index, item) {
                    var timeFormatted = new Date(item.when);
                    var minutes = timeFormatted.getMinutes();
                    var newTime = timeFormatted.setMinutes(minutes + 1 * 60000);
                    item.when = newTime;
                    console.log(newTime);
                });
            }
        }, 5000);

coś to nie chce działać :/ poprawnie nie wyświetla mi tych czasów. wyświetla np. 3 miresiące, a wcześniej pokazało 1 minute

EDIT:
działa tak:

 $interval(function () {
            if ($scope.dane != null) {
                $.each($scope.dane, function (index, item) {
                    var timeFormatted = new Date(item.when);
                    var minutes = timeFormatted.getMinutes();
                    var newTime = timeFormatted.setMinutes(minutes - 1);
                    item.when = newTime;
                });
            }
        }, 60000);

tylko nie wiem czemu trzeba wstawić tam minus zamiast plus...


Pomogłem? To dobrze :)
edytowany 3x, ostatnio: ne0, 2015-02-18 15:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0