Angularjs - 多重ng重复和过滤问题

时间:2014-11-18 11:32:40

标签: javascript angularjs

我有两个ng-repeat和一个自定义过滤器的问题。这是我的代码:

HTML

<ul class="dropdown-menu">
    <li ng-repeat="L in prontoSoccorsoLista"><a href="" ng-click="azione = L.prontoSoccorso; setLabel(L.prontoSoccorso)">{{L.prontoSoccorso}}</a></li>
</ul>

<div class="prontosoccorso" ng-repeat="PS in prontoSoccorso | myFilter:azione" >
    data to show not important
</div>

JS

.filter('myFilter', function () {
return function (items, search) {
    var result = [];
    console.log(search);
    angular.forEach(items, function(friendData){
        if(friendData.prontoSoccorso == search) {
            result.push(friendData);
        } else if(search == undefined) {
            result.push(friendData);
        }
    });
    return result;

}
});

我必须设置azione的值。在列表上的whitout ngrepeat我可以成功设置“azione”并在过滤器中捕获正确的“搜索”值。这是一个例子:

<ul class="dropdown-menu">
    <li><a href="" ng-click="azione = 1; setLabel('ps1')">{{ps1}}</a></li>
    <li><a href="" ng-click="azione = 2; setLabel('ps2')">{{ps2}}</a></li>
    <li><a href="" ng-click="azione = 3; setLabel('ps3')">{{ps3}}</a></li>
</ul>

当我插入ngrepeat并尝试设置“azione”时,在过滤器中它将“search”的值返回为“undefined”。我该如何解决?

1 个答案:

答案 0 :(得分:1)

myFilter:azione指的是$ scope.azione,而ng-click不是

尝试在控制器中创建一个功能:

$scope.setAzione = function (L) {
              if (L.prontoSoccorso) {
                  $scope.azione = object.prontoSoccorso;
              }
          }

然后致电

ng-click="setAzione(L)"