2016-03-03 185 views
2

我在AngularJS的新手,我有这个概率在这里,我想这可能是简单的,但我不能拍下来,但AngularJS NG重复+ NG-点击+动态过滤器

我已经有一个过滤器的过滤器从数组中搜索一个数字,然后,我用一个Obj []创建了一个li-tag,它是通过输入[type:number]字段创建的。

每个li标签都应该有一个带有这个garageFilter过滤器的ng-click事件,当我点击这个li标签时,它必须根据过滤器中的项目编号来搜索元素。 我已经有这个过滤器视图中的L1标签元素,但这个工作以及不能动态地创建为别人一说我需要

<li data-ng-click="garageFilter={level:3}">Level 3</li> 

的动态L1标签我已经试过这

<li data-ng-repeat="level in levelNum track by $index" ng-click="garageFilter={level:{{level}}">Level {{level}}</li> 

和HTML创建这个<li data-ng-repeat="level in levelNum track by $index" ng-click="garageFilter={level:5}" class="ng-binding ng-scope">Level 5</li>

,但过滤器不工作..

谁能帮助我吗? ?请 谢谢你们!

+0

'等级{{LVL}}' 。 – Michael

+0

迈克尔你好,它不会这样工作..它不会让取或过滤器点击 – Codasko

+0

你几乎是正确的迈克尔,只剩下一件事,把它作为一个函数传递;无论如何谢谢 – Codasko

回答

1

四处搜寻,我找到了正确的方法。当我读到:

问题是因为ng-repeat为每个 迭代创建一个新的作用域。你正在写在迭代范围

所以要面对的最好的方法是创建一个函数,而不是手动分配的

在我的情况

在应用

$scope.myGarageFilter = function(value){ 
     $scope.garageFilter = {level:value}; 
    } 

html

<span ng-repeat="lvl in levelNum"> 
    <li ng-click="myGarageFilter(lvl.num)">Level {{lvl.num}}</li> 
</span> 

代替:

<li ng-click="garageFilter={level:4}">Level 4</li>