Ng-table: Ladeeffekt

Erstellt am 14. Okt. 2015  ·  8Kommentare  ·  Quelle: esvit/ng-table

Wenn Sie Daten vom Server laden, müssen Sie immer einige Sekunden warten, und es wird leer angezeigt. Gibt es also einfache Möglichkeiten, den Ladetext anzuzeigen?

Hilfreichster Kommentar

Sprichst du von der Filterverzögerung?

Wenn es nur ein Ladeeffekt beim Abrufen von Daten vom Server ist, können Sie ngAnimate und css mit einem ladenden booleschen Satz verwenden, wenn Sie die Funktion getData() aufrufen:

settings.getData = function (params: ng.ngtable.ITableParams): ng.IPromise<Array<T>> {
                    self.isLoading = true;
                    return self.itemsFunction(self.specification).then((result: IGridItemWrapper<T>): Array<T> => {
                        self.setItems(result.Items);
                        self.isLoading = false;
                        params.total(result.Count);
                        return result.Items;
                    }).catch((error) => {
                        self.isLoading = false;
                    });
};

Und dann fügen Sie eine CSS-Klasse in die Tabelle ein:

<table ng-table="plc.tableParams" ng-class="{'loading': plc.isLoading}">

und sein Verwandter in CSS:

.loading-remove {
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}
.loading,
.loading-add.loading-add-active {
    opacity: 0.5;
    //animation: blinker 0.5s cubic-bezier(.5, 0, 1, 1) infinite alternate;  
}
.loading-remove.loading-remove-active {
    opacity: 1;
}
<strong i="13">@keyframes</strong> blinker {  
    from { opacity: 1; }
    to { opacity: 0.5; }
}

Alle 8 Kommentare

+1, möchte diese Funktion auch.

+1

+1

+1

+1

Ich stecke beim Laden der Daten fest, gibt es eine Lösung?

Sprichst du von der Filterverzögerung?

Wenn es nur ein Ladeeffekt beim Abrufen von Daten vom Server ist, können Sie ngAnimate und css mit einem ladenden booleschen Satz verwenden, wenn Sie die Funktion getData() aufrufen:

settings.getData = function (params: ng.ngtable.ITableParams): ng.IPromise<Array<T>> {
                    self.isLoading = true;
                    return self.itemsFunction(self.specification).then((result: IGridItemWrapper<T>): Array<T> => {
                        self.setItems(result.Items);
                        self.isLoading = false;
                        params.total(result.Count);
                        return result.Items;
                    }).catch((error) => {
                        self.isLoading = false;
                    });
};

Und dann fügen Sie eine CSS-Klasse in die Tabelle ein:

<table ng-table="plc.tableParams" ng-class="{'loading': plc.isLoading}">

und sein Verwandter in CSS:

.loading-remove {
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}
.loading,
.loading-add.loading-add-active {
    opacity: 0.5;
    //animation: blinker 0.5s cubic-bezier(.5, 0, 1, 1) infinite alternate;  
}
.loading-remove.loading-remove-active {
    opacity: 1;
}
<strong i="13">@keyframes</strong> blinker {  
    from { opacity: 1; }
    to { opacity: 0.5; }
}

Kein Arbeiten mehr.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen