<input ng-model="search.name" placeholder="Name" />
<tbody>
<div ng-init="FilteredGeojson = ho|filter:search">
<tr ng-repeat="hf in FilteredGeojson">
<td>{{ hf.name }}</td>
</tr>
</div>
</tbody>
</table>
<div leaflet-directive id="map" data="FilteredGeojson"></div>
如果可能的话,在ng-init中进行过滤非常重要,但我无法解决它,我无法进行ng-repeat并创建我传递给我的指令的范围,因为它启动了无限的摘要循环。
答案 0 :(得分:13)
由于ho
和filter:search
不同,您的代码段不起作用。在
ng-init="FilteredGeojson = ho | filter:search"
...分配FilteredGeojson = ho
在应用过滤器| filter:search
之前完成,但不起作用。
您需要封装过滤值,如下所示:
ng-init="FilteredGeojson = (ho | filter:search)"
在ng-init中进行过滤非常重要
重要的是什么? ngInit
指令只会在那里调用一次,因此当您更新过滤器时,ngRepeat
中的项目将不会更新。但你需要这个,对吗?
要实现这一点,您应该在ngRepeat
指令中添加过滤器,如下所示:
<tr ng-repeat="hf in FilteredGeojson | filter:search">
<td>{{ hf.name }}</td>
</tr>
这两种解决方案均可在this plnkr example中找到。
答案 1 :(得分:0)
您在这里不需要ng-init
,而是ng-repeat
的即兴使用。
这是更新的plnkr。
这是plnkr中的index.html。
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>
document.write('<base href="' + document.location + '" />');
</script>
<link href="style.css" rel="stylesheet" />
<script data-semver="1.3.13" src="https://code.angularjs.org/1.4.8/angular.js" data-require="angular.js@1.3.x"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
FilteredGeojson.length :- {{FilteredGeojson.length}}
<br>
<input ng-model="search" placeholder="Name" /> {{ search }}
<table >
<tr ng-repeat="item in (FilteredGeojson = (Geojson | filter:search))">
<td>{{ item.name }}</td>
</tr>
</table>
</body>
</html>
使用输入框更改范围上的FilteredGeojson
变量时,将更新 search
。我更新了plnkr以显示这一点。
此外,如果Geojson
数组是长数组,则可以像这样使用limitTo
过滤器。
<tr ng-repeat="item in (FilteredGeojson = (Geojson | filter:search)) | limitTo: 5">
让我知道它是否有帮助。
答案 2 :(得分:-1)
我使用Sharikov Vladislav的例子。谢谢顺便说一句。
对我而言,只有没有“过滤器”才能正常工作:
<div class="centerdivConteneur" ng-init="$root.breadcrumb.label = '<li><a href=\'#\'>Index</a></li><li>' +('Plan du site'|translate)+'</li>'">
(此页面没有控制器)