3

を使用してリクエストの応答を取得しようとして$resourceいます。たとえば、次のようなものがあります。

angular.module('app').factory('AuthResource', ['$resource', function($resource) {
    return {
        isAuthenticated : function() {
            return $resource('/api/v1/auth/authenticated').query();
        }
    }
}]);

次に、コントローラーでこのサービスを呼び出して、次のことを行います。

console.log(AuthResource.isAuthenticated());

これは実際の結果を返しません。これは単に単一のオブジェクト{'success' : 'true'}です。

代わりに次を返します。

Resource {$resolved: false, $then: function, $get: function, $save: function, $query: function…}
$resolved: true
$then: function (callback, errback) {
success: false
__proto__: Resource

実際に返されたオブジェクトを取得するにはどうすればよいですか? これをモデルに適用するのではなく、データを使用してルーティングを決定するだけです。

ありがとうございました!

4

3 に答える 3

3

次のようなテストを設定しました。

var status = {};
$httpBackend.expectGET("/api/Accounts/AuthenticationStatus").respond(status);

それから私は期待を持っていました:

expect(actual).toBe(status);

次のエラーが発生しました。

Expected { $resolved : true, $then : Function } to be { }.

長い間頭を悩ませていたのですが、get() 関数によって返されるオブジェクトが、$httpBackend サービスを応答するように設定したオブジェクトとまったく同じになることは決してなく、基本オブジェクトを返すことに気付きました。 { $resolved : ..., $then : ... } そして、解決されたら、応答オブジェクトに含まれる追加フィールドをそのオブジェクトに追加します。

前のポスターよりも理にかなっていることを願っています。

于 2013-05-16T03:06:53.200 に答える
2

以下のようにコードを変更するだけです

angular.module('app').factory('AuthResource', ['$resource', function($resource) {
    return {
        isAuthenticated : function() {
            return $resource('/api/v1/auth/authenticated')
        }
    }
}]);

--controller 
AuthResource.isAuthenticated().query(function(data){
console.log(data);
});

データがサーバーから返された場合、オブジェクトはリソース タイプのインスタンスであり、GET 以外のすべてのメソッドは $ プレフィックスで使用できます。

于 2013-04-24T17:42:55.093 に答える