尝试通过 $routeParams:id 过滤 JSON 文件。 通常我这样做:
var eventId = $routeParams.eventId;
$http.get('json/events.json')
.success(function(data){
angular.forEach(data,function(d){
if(d.id == eventId)$scope.event = d;
});
});
找到了一些执行此操作的工作代码:
var eventId = $routeParams.eventId;
$http.get('json/events.json')
.success(function(data){
$scope.template = $filter('filter') (data, function(d){
return d.id == eventId;
})[0];
});
你能解释一下第二个例子的语法吗?特别是函数调用后的方括号符号?哪种方法更好?
谢谢
最佳答案
我认为第一种方法更适合此目的。
$filter
主要用于模板。例如如果你想使用过滤器
在 ng-repeat
指令中。
在第二个示例中 $filter 返回过滤数据的数组。最后通过 [0]
分配第一个元素。如果过滤后的数组中没有数据,这可能会导致范围错误。
忽略您可能使用的错误
var filteredTemplates = $filter('filter') (data, function(d){
return d.id == eventId;
});
$scope.template = (filteredTemplate.length && filteredTemplate[0])|| default_template;
并且只有一个条件需要检查,因此不需要使用过滤器,只需循环它,如果您找不到您创建的过滤器的多重用途。
编辑:访问空数组的第一个元素不会抛出错误,而是返回undefined
关于javascript - angularJs $filter javascript 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33980597/