0

チュートリアルとドキュメントは、AJAX呼び出しのこの非常に便利な構文を示しています。

$scope.myvar = $resource(/*blah blah*/);

APIが返されないが、次のようなsuccessfn場合に、この構文を(毎回新しいものを作成する代わりに)使用する方法はありますか?myvar{"myvar": myvar}

4

2 に答える 2

1

実際のAJAXリクエストを行うには、リソースでget()またはquery()を呼び出す必要があります。サーバーAPIの完全な結果を($ scope)変数に直接割り当てたくない場合は、success関数を作成する必要があります。

var SomeResource = $resource('/blah/blah');
var theResource = SomeResource.get({optional params here}, function() {
    $scope.myVar = theResource.myVar;
}

また

var SomeResource = $resource('/blah/blah');
SomeResource.get({optional params here}, function(theResource) {
    $scope.myVar = theResource.myVar;
}

または、@ Chasseurが推奨することを実行します。完全な結果を割り当ててから、ビューの適切なフィールドにバインドします。

var SomeResource = $resource('/blah/blah');
$scope.theResource = SomeResource.get({optional params here});

次に、HTMLでを使用します{{theResource.myVar}}

また、$ resourceは、$ httpとは異なり、promiseを返しません。 更新:Angularの新しいバージョンでは、$resourceがpromiseを公開するようになりました。

于 2013-02-05T02:54:20.533 に答える
1

更新:ああ、今私はあなたが求めているものを得たと思います:次のような呼び出しで、返されたオブジェクトのフィールドの空の参照(プレースホルダー)が必要です:

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

私は正しいですか?

もしそうなら - 最も簡単な方法は、オブジェクトのフィールド (別名 {{user.myvar}}) にバインドすることだと思います。


成功関数は、データが正常に受信された場合に 1 回だけ呼び出されます。関数は、フェッチされたデータを引数として呼び出され、その構造に関係なくアクセスできます。もちろん、1 つのインラインを定義する代わりに、関数を再利用できます。

したがって、これの代わりに (Angular docs の例):

$http({method: 'GET', url: '/someUrl'}).
  success(function(data, status, headers, config) {
    // this callback will be called asynchronously
    // when the response is available
  }).
  error(function(data, status, headers, config) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

以下を使用できます。

function myHandler(data) {
     // Do something with data.myvar ...
}

$http({method: 'GET', url: '/someUrl'}).success(myHandler);

これが役立つことを願っていますが、おそらくあなたが何を求めているのか正確にはわかりませんでした:)教えてください。

関連ドキュメント

于 2013-02-03T18:16:16.640 に答える