Change ng-view after get data in Angular.JS

Siper

I'm going to get some data from server using $http and JSON response. $http.get() are called after route change. But template are changed before data is downloaded. My goal is:

  • User press a hyperlink in menu, that changes a route,
  • Shows Loading Spinner (DOM Element is in another controller which is on page everytime)
  • Initializing $scope.init() (via ng-init="init()") in controller which is in my new template, this also initializing get data from server
  • Data are downloaded, now I can hide spinner and change visible template

How can I do this? My App looks for example:

Javascript:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function($scope, $http) {
    $scope.init = function() {
       $http({method: 'GET', url: 'http://ip.jsontest.com/'}).success(function(data) {
           console.log(data);
               $scope.ip = data.ip;
           });
    }
});

myApp.config(function($routeProvider) {

    $routeProvider.when('/link', {
        controller: 'MyCtrl',
        templateUrl: 'embeded.tpl.html'
    });
});

HTML:

<script type="text/ng-template" id="embeded.tpl.html">
    <div ng-controller="MyCtrl" ng-init="init()">
    Your IP Address is: {{ip}}
    </div>
</script>

<div>

    <ul>
        <li><a href="#/link">change route</a></li>
    </ul>

    <div ng-view></div>
</div>
allenhwkim

You need to resolve data before routing happens, thus, move your $http to config section.

This is good tutorial for that, http://www.thinkster.io/pick/6cmY50Dsyf/angularjs-resolve-conventions

This is config part.

 $routeProvider.when('/link', {
    controller: 'MyCtrl',
    templateUrl: 'embeded.tpl.html',
    resolve: {
      data: function ($q, $http) {
        var deferred = $q.defer();
        $http({method: 'GET', url: 'http://ip.jsontest.com/'}).then(function(data) {
          deferred.resolve(data);
        });
        return deferred.promise;
      }
    }
 }

and this is controller part

//`data` is injected from routeProvider after resolved
myApp.controller('MyCtrl', function($scope, $http, data) { 
  $scope.ip = data.ip
});

I think promise in AngularJS is very important concept for any async. processing. You need to use this technique every time you have callback.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Angular JS: get ng-model on ng-change

From Dev

jsPlumb is not redrawn after view change in angular.js?

From Dev

Angular.js // ng-leave state before url/ng-view change

From Dev

Angular resource .get does not change the passed value of user ID after ng-init

From Dev

ng-disabled not evaluating after data change

From Dev

ng-disabled not evaluating after data change

From Dev

Angular js ng-view rendered event

From Dev

Why do I get js execution errors with angular.dart 0.10 and ng-view?

From Dev

Angular JS Change Class on ng-mouseover

From Dev

Change View of a page after sending data

From Dev

How to change URL but not view Angular JS

From Dev

Angular.js: change internal view of a template

From Dev

ng-select Angular 2+ change model view

From Dev

Angular $parsers is calling after both view change and model change

From Dev

Angular.js Controller is Loading after the view

From Dev

Angular ng-repeat view does not update after a search

From Dev

Angular JS - Remember view input content on view change

From Dev

View doesn't get updated when using ng-if in angular

From Dev

data-ng-change does not work after set selectedIndex property

From Dev

Angular data binding not working inside ng-view

From Dev

How to do preloader for `ng-view` in Angular JS?

From Dev

Stop Angular JS ng-view from wiping the page out

From Dev

Angular JS: load custom javascript file in ng-view

From Dev

angular js ng-view returns blanc partials -- Express/ Jade

From Dev

weird behavior scope and ng-repeat in view, angular JS

From Dev

Angular js: Iterate over list in view (ng-foreach)

From Dev

ng-repeat issue in angular js,$scope binding with the view

From Dev

Angular 2 not refreshing the view after the value change of a variable?

From Dev

Angular 2 View will not update after variable change in subscribe

Related Related

  1. 1

    Angular JS: get ng-model on ng-change

  2. 2

    jsPlumb is not redrawn after view change in angular.js?

  3. 3

    Angular.js // ng-leave state before url/ng-view change

  4. 4

    Angular resource .get does not change the passed value of user ID after ng-init

  5. 5

    ng-disabled not evaluating after data change

  6. 6

    ng-disabled not evaluating after data change

  7. 7

    Angular js ng-view rendered event

  8. 8

    Why do I get js execution errors with angular.dart 0.10 and ng-view?

  9. 9

    Angular JS Change Class on ng-mouseover

  10. 10

    Change View of a page after sending data

  11. 11

    How to change URL but not view Angular JS

  12. 12

    Angular.js: change internal view of a template

  13. 13

    ng-select Angular 2+ change model view

  14. 14

    Angular $parsers is calling after both view change and model change

  15. 15

    Angular.js Controller is Loading after the view

  16. 16

    Angular ng-repeat view does not update after a search

  17. 17

    Angular JS - Remember view input content on view change

  18. 18

    View doesn't get updated when using ng-if in angular

  19. 19

    data-ng-change does not work after set selectedIndex property

  20. 20

    Angular data binding not working inside ng-view

  21. 21

    How to do preloader for `ng-view` in Angular JS?

  22. 22

    Stop Angular JS ng-view from wiping the page out

  23. 23

    Angular JS: load custom javascript file in ng-view

  24. 24

    angular js ng-view returns blanc partials -- Express/ Jade

  25. 25

    weird behavior scope and ng-repeat in view, angular JS

  26. 26

    Angular js: Iterate over list in view (ng-foreach)

  27. 27

    ng-repeat issue in angular js,$scope binding with the view

  28. 28

    Angular 2 not refreshing the view after the value change of a variable?

  29. 29

    Angular 2 View will not update after variable change in subscribe

HotTag

Archive