0

関連するコードのスニペットは次のとおりです。

$scope.submit = function() {
  console.log(this);
  weekly_habits = $resource('/api/users/:user_id/weekly_habits/:id/', {user_id: '@user'});
  entry = weekly_habits.save({name: $scope.newAccomp, count: 0});
  $scope.accomplishments.unshift(entry);
  $scope.newAccomp = '';
}

私のエラーは、/api/users/weekly_habits に一致するルートがないことです...私のプロジェクトはレールで構築されており、この行が何を意味するのか理解できません {user_id: '@user'}. この @user オブジェクトはどこにあるべきですか? 誰かがここで何が起こっているのかを説明していただければ幸いです。

ありがとう!

4

2 に答える 2

0

ドキュメントから:

パラメータ値の前に @ が付いている場合、そのパラメータの値はデータ オブジェクトから抽出されます (非 GET 操作に役立ちます)。

そして後で彼らは例を持っています

var User = $resource('/user/:userId', {userId:'@id'});

そのため、リソース サービスの 2 番目の引数は既定のパラメーターです。この場合、デフォルトでは、メソッドを呼び出したリソース オブジェクトから userId が抽出されます。

以前、GET 操作の例を示しましたが、この場合はあまり意味がありません。しかし、データ オブジェクトを使用して POST ($save) リクエストを実行していると想像してください。Angular はデータ オブジェクトから userId を自動的に抽出し、それを URL に挿入します。URL の値を手動で指定する必要はありません。

詳細については、doc ページを参照してください。

http://docs.angularjs.org/api/ngResource .$resource

于 2013-10-16T21:17:45.123 に答える
0

ドキュメントの引用: 「パラメーター値の前に @ が付いている場合、そのパラメーターの値はデータ オブジェクトから抽出されます (非 GET 操作に役立ちます)。」

「@user」は、オブジェクトの「user」プロパティから user_id の値を抽出するように Angular に指示します。したがって.save()、「abc123」の「user」プロパティを持つオブジェクトを呼び出すと、URL の :user_id が「abc123」に置き換えられます。

于 2013-10-16T21:19:00.910 に答える