1

ここで基本的なものが欠けていると思いますが、ドキュメントや他の例を読んでもわかりませんでした。次のような工場にリソースがあります。

loteManager.factory('Lotes', function($resource) {
  return $resource('./api/lotes/:id',{ id:"@id" }, {
     get:  {method:'GET', isArray:true}
   });
});

そして私のコントローラー:

loteManager.controller('LoteCtrl',
  function InfoCtrl($scope, $routeParams, Lotes) {
    Lotes.get(function (response){
      console.log(response);
    });
});

この$resource('./api/lotes/21'ようにIDを手動で定義すると機能するので、問題はIDを工場に渡すことだと思いますが、すでに追加しようとしましparams:{id:"@id"}たが、それもうまくいきませんでした。

4

2 に答える 2

2

ID を渡す必要があります。

このようなもの:

loteManager.controller('LoteCtrl',
  function InfoCtrl($scope, $routeParams, Lotes) {
    Lotes.get({id: $routeParams.loteId}, function (response){
      console.log(response);
    });
});

...次のようなルートが定義されていると仮定します。

$routeProvider.when('/somepath/:loteId, {
    templateUrl: 'sometemplate.html',
    controller: LoteCtrl
});

ドキュメントごと:

var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
  user.abc = true;
  user.$save();
});
于 2013-06-21T20:25:03.637 に答える
1

あなたの問題は、「get」メソッド(id)のパラメーターがあると言っているが、Lotes.get(..)で呼び出しを行うときにメソッド「get」にIDを与えていないことだと思います

だから、あなたのメソッド呼び出しは次のようなものでなければならないと思います

Lotes.get({id: SOME_Id}, function(response){
    // ...do stuff with response
});

個人的には$qサービスの方がはるかに柔軟性があるため、その構文については完全にはわかりませんが、それが一般的にコードの問題であり、必要なパラメーターをメソッドに与えていません ( ID)。

また、非同期呼び出しを行っているため、Angular の$timeoutサービスを利用することを忘れないでください。

于 2013-06-21T20:29:02.220 に答える