1

我有一个像这样的 json 数组

//data.json
{
"one":   [ {"name":"john"},{"name":"joe"},{"name":"vicky"} ],
"two":   [ {"name":"mark"},{"name":"nike"},{"name":"albert"} ]
}

//filter.js
angular.module('eventFilters', ['calenderServices']).filter('compare', function(Name) {
var e=Name.query();

return function(input) {
alert(e['one'].length) //-->displays nothing
}

我正在尝试检索数组“一”和“二”的长度,但 jsondata['one'].length 没有返回长度,它没有显示任何内容。我用来从外部文件获取 json 数据的 angular restful 服务是正确的,这一点毫无疑问。因为我在过滤器中获取 json 数据,所以我不能使用 $scope.e=Name.query(); 所以我尝试使用'var',它适用于我的旧 json 数据,但不适用于我的新 json 文件。可能是什么问题?

提前致谢

4

1 回答 1

1

不完全确定您要在这里解决的确切问题是什么,但您在这里遇到的问题是您有一个异步调用 (.query()),它不会立即返回结果(我怀疑您正在使用 $resource ,它的语法可能表明它是同步的,更多信息在这里:https ://stackoverflow.com/a/11966512/1418796 )。

现在,过滤器还没有准备好处理异步结果,所以你在这里尝试做的事情不会起作用。最终,问题更多地与过滤器的异步函数调用有关。

很想在这里提供更多帮助,但从功能上讲,我不清楚您要达到的目标。

于 2012-12-15T13:16:51.670 回答