javascript - angularJs $filter javascript 语法

标签 javascript angularjs json

尝试通过 $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/

相关文章:

javascript - 表单未通过 Ajax 提交 "Submit"输入

javascript - 调用 URL 并获取返回值。 Jquery和Javascript都不显示返回值

java - 如何在不重叠先前数据的情况下编写 JSON 文件

java - 获取 HTTP 错误 : 500 on get response Json Object from glassfish Jersey Rest server

javascript - 通过ajax无法填充HTML下拉列表

javascript - 防止 JavaScript 中使用迭代的嵌套回调

javascript - 动态 <svg-icon> 作为 Angular 指令

javascript - angularjs $log - 显示行号

angularjs - 我如何在 AngularJS 的数据绑定(bind)中放置一个条件?

android - 如何在单个微调器中动态绑定(bind)多个 json 值?