5
<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 并创建我传递给我的指令的范围,因为它会启动无限摘要循环。

4

3 回答 3

14

你的问题的答案

您的代码段不起作用,因为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>

例子

此 plnkr 示例中提供了两种解决方案。

于 2015-02-11T18:36:03.313 回答
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>

FilteredGeojsonsearch当您使用输入框更改范围上的变量时,将更新。我更新了 plnkr 以显示这一点。

另外,如果Geojson数组是一个长数组,你可以limitTo像这样使用过滤器。

<tr ng-repeat="item in (FilteredGeojson = (Geojson | filter:search)) | limitTo: 5">

让我知道它是否有帮助。

于 2017-04-21T22:23:22.910 回答
-1

我以 Sharikov Vladislav 为例。顺便谢谢。

对我来说,它只有在没有“过滤器”的情况下才有效:

<div class="centerdivConteneur" ng-init="$root.breadcrumb.label = '<li><a href=\'#\'>Index</a></li><li>' +('Plan du site'|translate)+'</li>'">

(此页面没有控制器)

于 2015-07-13T08:29:13.700 回答