Arav
Arav

Reputation: 5247

AngularJS route provider - post request

How can I do a post request to a url using routeprovider? Provided sample code below

<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "main.htm"
    })
    .when("/red", {
        templateUrl : "red.htm"
    })
    .when("/green", {
        templateUrl : "green.htm"
    })
    .when("/blue", {
        templateUrl : "blue.htm"
    });
});
</script>

Upvotes: 1

Views: 2614

Answers (1)

nikjohn
nikjohn

Reputation: 21880

You can use a resolve:

.when("/", {
    templateUrl : "main.htm",
    resolve: {
      data: function($http) {
        $http.post('/yourUrl', yourData)
            .then(function(res) {
              return res;
            }, function(err) {
              console.log(err);
              return null;
            })
    }
    }
})

And then in your controller,

.controller(function(data) {
   console.log(data);
 })

NOTE: This is not using routeProvider per se, because making REST calls is not what the routeProvider is for. Angular can do that only through the $http service. I am assuming that you just want to make a REST call from within your route definition.

Protip A better way of doing this would be to define a service in your module, and insert the module in the route resolve, rather than injecting $http directly. I've done that here only for brevity

Upvotes: 2

Related Questions