Javascript 如何在$http中传递URL参数

Javascript 如何在$http中传递URL参数,javascript,angularjs,Javascript,Angularjs,我正在将服务器端CRUD应用程序转换为Angular.js,但有一个小问题 我使用$http获取数据,并通过ng repeat显示所有数据。我想让用户能够单击和指定项目,并将其重定向到资源 那么,如何将URL参数动态传递给$httpget调用呢 下面是我如何建立到资源的链接(car.id=3) 因此,我有兴趣以有角度的方式绑定URL。上述解决方案可行,但感觉非常像黑客。我对Angular不太熟悉,所以我现在喜欢使用默认值。我可能会考虑REST或NG资源在稍后的时间…虽然 上述解决方案可行,但感觉

我正在将服务器端CRUD应用程序转换为Angular.js,但有一个小问题

我使用
$http
获取数据,并通过
ng repeat
显示所有数据。我想让用户能够单击和指定项目,并将其重定向到资源

那么,如何将URL参数动态传递给
$http
get调用呢

下面是我如何建立到资源的链接(car.id=3)

因此,我有兴趣以有角度的方式绑定URL。上述解决方案可行,但感觉非常像黑客。我对Angular不太熟悉,所以我现在喜欢使用默认值。我可能会考虑REST或NG资源在稍后的时间…虽然

上述解决方案可行,但感觉非常像黑客

我不认为这是黑客或什么乱七八糟的东西

我会在controller中生成URL列表(从我的观点来看,这对代码维护来说更好),而无需附加HTML。比如:

 $scope.urlList = [];

    $http({
     method: 'GET',
     url:  $location.$url,
   })
   .success(function (data, status, headers, config) {
     $scope.car = data;
     $scope.urlList.push("/#/cars/" + data.id);
   })
   .error(function (data, status, headers, config) {
     // error
   });
在HTML中输入后:

<li ng-repeat="url in urlList" repeat-done="layoutDone()" ng-cloak>
    <a ng-href="{{url}}">Edit</a>
</li>
  • 顺便说一句,我建议您使用一些加载器,因为我们从promise(又名async)生成的URL链接会有延迟


    演示

    在您的app.js中执行以下操作

     var app = angular.module('YourAPP');
            app.config(function ($routeProvider) {
                $routeProvider
                    .when('/cars/:CarID', {
                        templateUrl: 'app/views/cars.html',
                        controller: 'CarIndexCtrl'
                    });
        });
    
    在你的控制器里

    App.controller('CarIndexCtrl', ['$scope', '$http', '$location', function ($scope, $http, $location) {
    
       $scope.car = {};
    
       $http({
         method: 'GET',
         url:  $location.$$url,
       })
       .success(function (data, status, headers, config) {
         $scope.car = data;
       })
       .error(function (data, status, headers, config) {
         // error
       });
    
    }]);
    
        App.controller('CarIndexCtrl', ['$scope', '$http', '$location', '$routeParams', function ($scope, $http, $location, $routeParams) {
    
           $scope.car = {};
            $scope.carid = $routeParams.CarID;
           $http({
             method: 'GET',
             url:  $location.$$url,
           })
           .success(function (data, status, headers, config) {
             $scope.car = data;
           })
           .error(function (data, status, headers, config) {
             // error
           });
    
    }]);
    

    并在控制器中的任何位置使用carid。希望有帮助。

    谢谢,我会试试你的建议!所以url:$location.$$url方法是通常使用的方法。不知何故,我认为有另一种绑定url的方法。
        App.controller('CarIndexCtrl', ['$scope', '$http', '$location', '$routeParams', function ($scope, $http, $location, $routeParams) {
    
           $scope.car = {};
            $scope.carid = $routeParams.CarID;
           $http({
             method: 'GET',
             url:  $location.$$url,
           })
           .success(function (data, status, headers, config) {
             $scope.car = data;
           })
           .error(function (data, status, headers, config) {
             // error
           });
    
    }]);