Vorrei ritardare l'inizializzazione di un controller finché non sono arrivati i dati necessari dal server.Inizializzazione del controller di ritardo Angular.js
ho trovato questa soluzione per 1.0.1 Angolare: Delaying AngularJS route change until model loaded to prevent flicker, ma non poteva farlo funzionare con angolare 1.1.0
Template
<script type="text/ng-template" id="/editor-tpl.html">
Editor Template {{datasets}}
</script>
<div ng-view>
</div>
JavaScript
function MyCtrl($scope) {
$scope.datasets = "initial value";
}
MyCtrl.resolve = {
datasets : function($q, $http, $location) {
var deferred = $q.defer();
//use setTimeout instead of $http.get to simulate waiting for reply from server
setTimeout(function(){
console.log("whatever");
deferred.resolve("updated value");
}, 2000);
return deferred.promise;
}
};
var myApp = angular.module('myApp', [], function($routeProvider) {
$routeProvider.when('/', {
templateUrl: '/editor-tpl.html',
controller: MyCtrl,
resolve: MyCtrl.resolve
});
});
Esempio di lavoro: http://jsfiddle.net/dTJ9N/5 – mb21
Direi che il colpo di performance per aver avvolto la promessa di $ http con un'altra promessa in questo caso è così piccolo che non vale la pena preoccuparsi. Tuttavia, il codice più conciso derivante dall'esclusione della promessa extra è un degno perseguimento. –
Il codice è bello e pulito, ma ad oggi, il violino è rotto, mostra la fonte del documento. Troppo nuovo per Angular per essere di grande aiuto oltre a ciò. – enigment