필요한 데이터가 서버에서 도착할 때까지 컨트롤러의 초기화를 지연하고 싶습니다. Angular.js 컨트롤러 초기화 지연
나는 각도 1.0.1이 솔루션을 발견 : Delaying AngularJS route change until model loaded to prevent flicker을하지만, 각도 1.1.0템플릿과
<script type="text/ng-template" id="/editor-tpl.html">
Editor Template {{datasets}}
</script>
<div ng-view>
</div>
자바 스크립트 작동되지 수
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
});
});
실제 예 : http://jsfiddle.net/dTJ9N/5 – mb21
이 경우에 다른 약속으로 $ http의 약속을 래핑하기위한 성능 저하는 너무 작아 걱정할 필요가 없습니다. 그러나, 여분의 약속의 배제로 인한보다 간결한 코드는 가치있는 추구입니다. –
코드는 훌륭하고 깨끗하지만 오늘은 바이올린이 깨져서 문서 소스를 보여줍니다. 주목할 가치가있는 것보다 훨씬 많은 도움을 받으려면 Angular에 너무 익숙하지 않습니다. – enigment