以下是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;
});
答案 0 :(得分:1)
我认为您的错误来自:
ret = data.filter(...
您设置为响应的data
变量没有过滤方法。
它可能不是您认为的类型,或者您打算在其他方面调用过滤方法。