2

初めてangular.jsを試しています。残りのサービスを次のように構成しました。

get('/api/users') //returns a JSON Array with all the users
get('/api/users/:id') //returns a JSON object with the requested ID

私のAngularControllerは次のように設定されています:

UserCtrl.factory('User', function($resource) {
    return $resource('/api/users/:id', { id: '@id' }, { update: { method: 'PUT' } });
});

var EditCtrl = function($scope, $location, $routeParams, User){
    var id = $routeParams._id;
    $scope.user = User.get({id: id});
};

私の問題は私が走るとき

User.get({id: id})

要求されたURLは次のとおりです。

http://localhost:8080/api/users?id=389498473294

なりたい

http://localhost:8080/api/users/389498473294

私はそれを使用してそれを行うことができますが、私はそれを行うことができるはずだと$http思います....get()

ありがとう

4

1 に答える 1

4

@ を前に付けて id パラメーターのデフォルト値を定義します。これは、パラメーターとして呼び出しに渡されたオブジェクトから値を取得する必要があることを意味します。get 呼び出しでは送信されるオブジェクトがないため、id パラメータには null 値が割り当てられます。id パラメーターは既に割り当てられているため、渡す値はクエリ パラメーターとして追加されます。この説明については、Usage/Param defaults 段落の下にあるangular ドキュメントを参照してください。サービスを宣言する正しい方法は次のとおりです。

UserCtrl.factory('User', function($resource) { return $resource('/api/users/:id', { id: '' }, { update: { method: 'PUT' } }); }) ;

于 2013-02-11T14:51:35.297 に答える