下面是来自 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;
});