rsalit
rsalit

Reputation: 91

Angularjs: not passing passing ui-sref to route

If I plug in a value it works but my form is not passing the $stateParam parameter to my routing script. Here is the table snippet:

<tr ng-repeat="folder in vm.folders" ng-click="editRecord(folder)">
     <td >{{folder.subfolderId}}</td>
     <td >
         <a ui-sref="subfolderDetail({id: folder.subfolderId})">{{folder.displayName}}
         </a></td>
     <td>{{folder.description}}</td>
     <td>{{folder.subfolderGuid}}</td>
</tr>

And then here is the section from the route:

function config($stateProvider) {
  $stateProvider
    .state('subfolders', {
        url: "/subfolders",
        templateUrl: "app/subfolders/subfolders.html",
        controller: "subfolderListController as vm"
    })
    .state('subfolderDetail', {
        url: "/subfolderDetail",
        templateUrl: "app/subfolders/subfolderDetail.html",
        controller: "subfolderDetailController as vm",
        resolve: {
            subfolderResource: "subfolderResource",

            subfolder:
                function (subfolderResource, $stateParams) {
                    var vid = $stateParams.id;
                    //alert($stateParams);
                    //var vid = 9;
                    return subfolderResource.get({ id: vid }).$promise;
                }
        }
    })

    .state('/optinoptions', {
        templateUrl: '/app/optinOptions/optinOptions.html'

    });

 //$locationProvider.html5Mode(true);
}
config.$inject = ['$stateProvider'];

The route for 'subfolderDetail' is not getting the $stateParams variable. If I set up a variable (commented out) it correctly calls the WebApi. What am I missing?

Upvotes: 0

Views: 107

Answers (1)

Radim K&#246;hler
Radim K&#246;hler

Reputation: 123861

It seem you forgot to declare the parameter:

 .state('subfolderDetail', {
    url: "/subfolderDetail/:id",

This way we say: state 'subfolderDetail' has url parameter id, which will be expected in url after "/subfolderDetail/".

There are other ways (e.g. params: {}), but this is most usual, the standard. Read more here:

$stateProvider

Upvotes: 1

Related Questions