1

サーバー側の CRUD アプリを Angular.js に変換していますが、小さな問題があります。

でデータを取得し、$httpを介してすべてのデータを表示していますng-repeat。ユーザーが特定のアイテムをクリックしてリソースにリダイレクトできるようにしたいと考えています。

$httpでは、動的に get 呼び出しにURL パラメータを渡すにはどうすればよいでしょうか?

リソースへのリンクを作成する方法は次のとおりです (car.id = 3)

<a ng-href="/#/cars/{{car.id}}">Edit</a>

リンクはhttp://local.dev/#/cars/3に移動する必要があります

では、コントローラーで動的 URL をバインドするにはどうすればよいでしょうか。

これが私のコントローラーの簡素化されたバージョンです

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
   });

}]);

したがって、URL を角度のある方法でバインドすることに興味があります。上記の解決策は機能しますが、ハックのように感じます。私は Angular にあまり詳しくないので、今のところデフォルトに固執するのが好きです。後でrestangularまたはng-resourceを検討するかもしれませんが...

4

2 に答える 2

1

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', '$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を使用してください。それが役に立てば幸い。

于 2013-10-15T11:50:19.000 に答える