json2031
json2031

Reputation: 31

How can I pass url params to templateUrl

I am using angular ui-router to retrieve a page, but on the documentation, it only shows how to pass in parameters in the url, not the template url.

Is there anyway where it can be passed in the templateUrl?

Below is my code

 <div ui-view></div>
 <!-- We'll also add some navigation: -->
 <a ui-sref="contacts({contactId: 1})">State 1</a>

And the angular config:

myApp.config(function($stateProvider) {
    $stateProvider
        .state('contacts', {
            url: "/states?myParam={contactId}",
            templateUrl: "states1.html"
        });
});

Upvotes: 2

Views: 783

Answers (2)

David Votrubec
David Votrubec

Reputation: 4156

Why would you want it?

The only reason I can think about is that you want to customize the template on the server-side based on the passed arguments. Which goes against the idea of templates :)

Templates should be generic enough.

Upvotes: 0

dfsq
dfsq

Reputation: 193261

templateUrl can be a function that takes stateParams parameter:

.state('contacts', {
    url: "/states?myParam={contactId}",
    templateUrl: function(stateParams) {
        return "states" + stateParams.contactId + ".html";
    }
})

Upvotes: 1

Related Questions