angularJs $filter javascript syntax
angularJs $filter javascript syntax
尝试通过$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
主要用于模板。例如,如果要使用filter在CCD_ 2指令中
在第二个示例$filter返回一个已过滤数据的数组。最后通过CCD_ 3分配第一个元素。如果筛选的数组中没有数据,这可能会导致范围错误。
要忽略该错误,您可以使用
var filteredTemplates = $filter('filter') (data, function(d){
return d.id == eventId;
});
$scope.template = (filteredTemplate.length && filteredTemplate[0])|| default_template;
而且只有一个条件需要检查,所以不需要使用filter,只要循环通过它,如果你找不到你创建的filter的多用途。
EDIT:访问空数组的第一个元素不会引发错误,而是返回undefined
过滤器用于格式化显示给用户的数据。其主要目的是格式化Angular模板中显示的数据。$filter是一个角度模块的过滤服务。它包含对所有过滤器的引用。
$filter('nameOfTheFilter')(array, expression, comparator)
在这里,您将从过滤器服务获得默认过滤器,并传入一个数组和一个迭代器函数,该函数将为数组中的每个元素调用。$filter('filter')返回一个数组,该数组满足迭代器函数中的返回条件。您正在将已筛选数组的第一个元素分配给$scope.template。如果筛选器返回空数组,它可能会分配未定义的
$filter('filter') (data, function(d){
return d.id == eventId;
})[0];
相关文章:
- JavaScript syntax (0, fn)(args)
- Javascript Syntax: AngularJS Filter
- Javascript JSON syntax
- bxSlider javascript escape ' syntax
- JavaScript: hasOwnProperty vs dot syntax
- JavaScript class syntax?
- angularJs $filter javascript syntax
- Javascript syntax: var array = [].push(foo);
- Javascript & jquery syntax
- Javascript if syntax
- javascript syntax with jQuery
- JSON & JavaScript Syntax
- JavaScript syntax
- Javascript "for" syntax
- Javascript VAR syntax
- Angular2 - TypeScript to JavaScript ES6 Syntax - ng2-transla
- ", match" syntax Javascript
- javascript syntax $.tzPOST
- Selenium IDE gotoIf javascript syntax
- JavaScript RegEx Syntax