从回调访问时Javascript范围错误

时间:2012-09-22 01:36:28

标签: javascript angularjs

以下是angularjs服务代码的一部分。虽然这可能不是一个特定的问题。

$http.get('/api/test/1').then ( ...返回promise,我喜欢处理回调返回的数据。访问过滤器方法时出错。

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;
});

1 个答案:

答案 0 :(得分:1)

我认为您的错误来自:

ret = data.filter(...

您设置为响应的data变量没有过滤方法。

它可能不是您认为的类型,或者您打算在其他方面调用过滤方法。

相关问题