Dies ist keine Frage über etwas, wo ich stecken bleibe. Es geht um gute Praxis und Leistung. Mein Code funktioniert ordnungsgemäß. Aber ich möchte wissen, wie man diese Aufgabe richtig durchführt. Vielleicht habe ich schon recht. Schau dir das Szenario und den Code an und bitte schlage mir den richtigen Weg vor.Angular js holen Daten aus mehreren Tabellen gleichzeitig
Anforderung
ich in der Nähe von etwa 20 Tabellen in der Datenbank haben, wenn sich ein Benutzer anmeldet und gehen auf die Dashboard-Seite ich die Daten aus allen Tabellen zeigen müssen. Es ist nicht erforderlich, alle Daten anzuzeigen, sodass ich 25 Zeilen aus jeder Tabelle mit Angular $ http abrufen und auf der Dashboard-Seite anzeigen kann.
-Code
Meine Angular js-Code ist:
$scope.$on('$viewContentLoaded', function (event) {
$scope.loadDashboardQue(event, '/route1/getDashboardData?user_id=123', 'table1');
$scope.loadDashboardQue(event, '/route2/getDashboardData?user_id=123', 'table2');
$scope.loadDashboardQue(event, '/route3/getDashboardData?user_id=123', 'table3');
$scope.loadDashboardQue(event, '/route4/getDashboardData?user_id=123', 'table4');
$scope.loadDashboardQue(event, '/route5/getDashboardData?user_id=123', 'table5');
$scope.loadDashboardQue(event, '/routeN/getDashboardData?user_id=123', 'tableN');
});
Jetzt loadDashboardQue Funktion defination
$scope.loadDashboardQue = function (event, url, tableName) {
$http.get(url)
.success(function (response) {
if (response.status === 'success') {
//Assigning data to HTML table
if (tableName === 'table1') {
$scope.table1Data = response.data;
}
if (tableName === 'table2') {
$scope.table2Data = response.data;
}
if (tableName === 'table3') {
$scope.table3Data = response.data;
}
if (tableName === 'table4') {
$scope.table4Data = response.data;
}
if (tableName === 'table5') {
$scope.table5Data = response.data;
}
if (tableName === 'tableN') {
$scope.tableNData = response.data;
}
} else {
console.log("Something wrong while fetching data from table ", tableName);
}
})
.error(function (error) {
console.log("The error is :", err);
});
});
HTML-Tabelle
<table style="width:100%">
<tr>
<th>Nme</th>
<th>Id</th>
<th>Contact No</th>
</tr>
<!--Table1 Data-->
<tr ng-repeat="data in table1Data">
<td>{{ data.user_name }}</td>
<td>{{ data.user_id }}</td>
<td>{{ data.mobile }}</td>
</tr>
<!--Table2 Data-->
<tr ng-repeat="data in table2Data">
<td>{{ data.customerName }}</td>
<td>{{ data.customerId }}</td>
<td>{{ data.phone }}</td>
</tr>
<!--Table3 Data-->
<tr ng-repeat="data in table3Data">
<td>{{ data.student_name }}</td>
<td>{{ data.roll_no }}</td>
<td>{{ data.mobile }}</td>
.
.
.
<!--TableN Data-->
<tr ng-repeat="data in tableNData">
<td>{{ data.developer_name }}</td>
<td>{{ data.id }}</td>
<td>{{ data.mobile }}</td>
</tr>
</table>
Sie können sehen, in jeder Tabelle der Spaltenname ist anders, so dass ich nicht in der Lage bin, alle Daten in einem einzigen ng-repeat
anzuzeigen. Also habe ich separate ng-repeat
für jede einzelne Tabelle geschrieben.
Dieser Code funktioniert gut, aber wenn die Seite beginnt zu laden dauert es mehr als 7 Sekunden so das ist meine Sorge (Leistung weise). Bitte sagen Sie mir, ob es einen besseren Weg gibt, um dies zu erreichen.
Vielen Dank für Ihre wertvolle Zeit.