在角度控制器

时间:2015-10-20 15:12:42

标签: javascript angularjs angular-ui-router query-string angular-routing

我想获得查询字符串,这是实际路线的一部分,这是实际的网址:
http://localhost:13453/Vehicle/Profile/c2db202f-9bf0-4876-851c-29964484bf7a

我想得到Profile /

之后的最后一个值

我如何在angularJS中实现这一点,然后我可以使用它来获取如下细节:

.controller('VehicleProfileController', ['$scope', '$http', '$location',
  function ($scope, $http, $location) {
    //get the id here which I'll pass to $http call

     $http({
         method: 'GET',
         url: '/Vehicle/GetProfile'
     }).
     success(function (data) {

     });

}])

3 个答案:

答案 0 :(得分:1)

如果你只是需要一个简单的javascript解决方案,你可以使用类似下面的内容,而不必连接其他依赖项:

var loc = window.location.href; 
var id = loc.slice(loc.lastIndexOf('/'), loc.length).split('/')[1];

在这里快速JSFiddle可以玩。

答案 1 :(得分:0)

您可以使用$stateProvider

angular.module('vehicles').config(['$stateProvider',
    function($stateProvider) {
      $stateProvider.
            state('vehiclesId', {
                url: '/Vehicle/Profile/:id',
                templateUrl: 'modules/view.client.view.html'
            });

}]);

比仅在控制器中使用:

angular.module('vehicles').controller('VehiclesController', ['$stateParams',
function($stateParams){

       $stateParams.id

}]);

答案 2 :(得分:0)

正如@sma在评论中所说,我们需要知道你在使用什么路由器。

<强> UI-路由器

如果您使用的是ui-router,并且如果您在州内定义了参数,则只需使用$stateParams即可将其保存在您的控制器中:

app.controller('MyController', ['$stateParams', function ($stateParams) {
    var id = $stateParams.myParamName; // the param defined in the state
}]);

<强> ngRoute

如果您使用的是ngRoute,则应以相同的方式使用$routeParams

app.controller('MyController', ['$routeParams',
    function($routeParams) {
        var id = $routeParams.myParamName; // the param defined in your route
}]);

修改

我假设你正在使用ngRoute,所以首先检查你的路线定义,它应该在你的config阶段,它应该是这样的:

.config(['$routeProvider',
    function($routeProvider) {
    $routeProvider.
      when('/phones', {
        templateUrl: 'partials/phone-list.html',
        controller: 'PhoneListCtrl'
      }).
      when('/phones/:phoneId', {
        templateUrl: 'partials/phone-detail.html',
        controller: 'PhoneDetailCtrl'
      }).
      otherwise({
        redirectTo: '/phones'
      });
}]);

然后,在您的控制器中,您应该能够获得您的参数(在此示例中称为phoneId),如上面的ngRoute控制器示例(使用$routeProvider)。< / p>

您可能应首先查看文档,特别是this part