0

以下は、angularjs サービスのコードの一部です。ただし、角度に固有の質問ではないかもしれません。

リターンの$http.get('/api/test/1').then ( ...約束と私は、コールバックによって返されたデータを処理するのが好きです。フィルター メソッドにアクセスするとエラーが発生します。

Test.filter(data.Root);


TypeError: Object #<Object> has no method 'filter'

dataしかし、同じスコープ (前の行) で変数にアクセスできました。

var testApp = angular.module('testApp.services', []);
testApp.factory('Test', function ($http, $rootScope) {
    var Test = {};
    var data = [];

    Test.filter = function (d) {
        ret = data.filter(function (el) {
            return el.Pid == d.Id;
        });
        return ret;
    };
    Test.data = function () {
        return data[1];
    };

    Test.start = function () {
        Test.asyncData = $http.get('/api/test/1')
            .then(function (response) {
                data = response;
                return Test.filter(data.Root);
            }, function (response) {
                Test.error = 'Can\'t get data';
                data = 'Error: ' + response.data;
                return data;
            });
    };

    return Test;
});
4

1 に答える 1

1

I think your error is coming from:

ret = data.filter(...

The data variable, which you set to the response, doesn't have a filter method.

It is probably either not of the type you think it is, or you meant to call the filter method on something else.

于 2012-09-22T01:54:10.403 に答える