All'interno della mia app AngularJS ho una vista con un JQuery datatable, controller per gestire i dati caricati nel datatable come mostrato di seguito. Quando si aggiorna la vista, i dati vengono caricati senza un problema nel datatable, ma se cambio rotta in un'altra vista, si ritorna alla vista con datatable ricevo il messaggio (nessun dato disponibile nella tabella) ... dopo aver tracciato il problema che ho trovato ciò accade perché il datatable viene caricato prima che la chiamata $ http ritorni. Ho provato ad aggiungere naif sul div contenente il datatable per impedirne la visualizzazione a meno che non ci siano dati restituiti ma senza fortuna poiché ha funzionato solo la prima volta che carico la pagina (tramite aggiornamento) ma non funzionerebbe sul cambio di rotta. Qualcuno può dirmi per favore cosa esattamente sto facendo qui e come risolvere questo problema? Grazie
app.js
$stateProvider.state('app.allmembers', {
url: '/members/members-list',
templateUrl: 'tpl/members/membersList.html'
})
Controller.js
.controller('MembersListController', ['$scope', '$http', 'GlobalService', function($scope, $http, GlobalService) {
$scope.dset = [];
$scope.getMembersList = function() {
var memURL = 'http://localhost:3000/apiserv/members/';
$http({ method:'GET',
url: memURL,
headers: { 'Content-Type' : 'application/json'
}
})
.success(function(data,status,headers,config){
$scope.dset = data;
$scope.tbOptions = {
data: $scope.dset,
aoColumns: [
{ mData: 'title' },
{ mData: 'firstName' },
{ mData: 'lastName' },
{ mData: 'email' }
],
aoColumnDefs: [
{
aTargets: [ 3 ],
mRender: function (data, type, full) {
return '<a href="mailto:' + data + '" style=color:red;>' + data + '</a>';
}
},
{
aTargets: [ 1 ],
mRender: function (data, type, full) {
return '<a href="#/app/members/update-member/' + full._id + '" style=color:blue;>' + data + '</a>';
}
}
]
};
console.log(data);
}
}).error(function(data,status,headers,config){
console.log(status);
});
};
}])
membersList.html
<div class="wrapper-md" ng-controller="MembersListController" ng-init="getMembersList()">
<div class="row">
<div class="col-sm-10">
<div class="panel panel-default">
<div class="panel-body">
<div class="table-responsive">
<table ui-jq="dataTable" ui-options="tbOptions" class="table table-striped m-b-none">
<thead>
<tr>
<th style="width:15%">Title</th>
<th style="width:30%">First Name</th>
<th style="width:30%">Last Name</th>
<th style="width:25%">Email</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
Non vedo dove viene visualizzato il messaggio "Nessun dato disponibile nella tabella". Inoltre, potresti inserire la tua istruzione ng-if nel codice di esempio? – Aidin
È possibile utilizzare una promessa per assicurarsi che i dati siano pronti prima di visualizzare i dati, o utilizzare una soluzione nel percorso delle app. – rbinsztock
@Aidin Non visualizzo il messaggio "Nessun dato disponibile nella tabella" questo fa parte dei datatables, inserito il ng-if before e ancora non ha funzionato – MChan