Reputation: 91
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
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:
Upvotes: 1