Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度过滤器和ng单击不工作_Javascript_Angularjs_Filter_Ng Repeat_Angularjs Ng Click - Fatal编程技术网

Javascript 角度过滤器和ng单击不工作

Javascript 角度过滤器和ng单击不工作,javascript,angularjs,filter,ng-repeat,angularjs-ng-click,Javascript,Angularjs,Filter,Ng Repeat,Angularjs Ng Click,我有一个菜单可以列出一组列表: <ul> <li ng-repeat="group in getData"> <a ng-click="groupId = group.id">{{group.id}}</a> </li> </ul> 它应过滤以下列表,以仅显示具有所选groupId的项目: Data.query(function(data) { $scope.getData = data; $sco

我有一个菜单可以列出一组列表:

<ul>
  <li ng-repeat="group in getData">
    <a ng-click="groupId = group.id">{{group.id}}</a>
  </li>
</ul>
它应过滤以下列表,以仅显示具有所选
groupId
的项目:

Data.query(function(data) {
  $scope.getData = data;
  $scope.currentGroup =  $filter('filter')(data, {id: $scope.groupId});
  $log.debug($scope.groupId);
  $log.debug($scope.currentGroup);
}, function(reason) {
  $log.error(reason)
});
<tr ng-repeat="list in currentGroup.lists">
  <td>{{list.name}}</td>
</tr>

{{list.name}
然而,它也不起作用。我可以在控制台中记录正确的数组,但该表没有显示任何数据


请看一下这个。

在你的背包里,你可以这样使用它

<table>
    <tr ng-repeat="group in currentGroup">
      <td ng-repeat="list in group.lists">{{list.name}}</td>
    </tr>
</table>

{{list.name}

因为currentGroup也是Plunker中的一个数组,所以您可以这样使用它

<table>
    <tr ng-repeat="group in currentGroup">
      <td ng-repeat="list in group.lists">{{list.name}}</td>
    </tr>
</table>

{{list.name}

由于currentGroup也是一个数组,因此您的代码存在多个问题。这里有两个:

  • ng repeat
    创建它自己的子作用域,因此当您执行
    ng click=“groupId=group.id”
    操作时,您要分配子作用域的
    groupId
    ,您应该设置父作用域的:

    <a ng-click="$parent.groupId = group.id">{{group.id}}</a>
    
  • 这是一个固定了这两个的plunker:


    您的代码存在多个问题。这里有两个:

  • ng repeat
    创建它自己的子作用域,因此当您执行
    ng click=“groupId=group.id”
    操作时,您要分配子作用域的
    groupId
    ,您应该设置父作用域的:

    <a ng-click="$parent.groupId = group.id">{{group.id}}</a>
    
  • 这是一个固定了这两个的plunker:


    您需要调用一个方法而不是在
    ng click
    @PraveshKhatri中提供值。您可以提供一个示例吗?您需要调用一个方法而不是在
    ng click
    @PraveshKhatri中提供值。您可以提供一个示例吗?请提供一个示例!您知道为什么单击链接时不更新表吗?它不应该更新过滤器吗?@drbishop,为什么要更新?您的
    $filter
    代码位于只调用一次的函数中。我明白了。我尝试在函数外部调用它,但是它不能作为
    $scope工作。getData
    未定义的
    。有更好的方法吗?@drbishop一种方法是更改您的视图以从函数获取列表,因此过滤器始终被调用:例如:谢谢,我非常感谢您的帮助。tks举个例子!您知道为什么单击链接时不更新表吗?它不应该更新过滤器吗?@drbishop,为什么要更新?您的
    $filter
    代码位于只调用一次的函数中。我明白了。我尝试在函数外部调用它,但是它不能作为
    $scope工作。getData
    未定义的
    。有更好的方法吗?@drbishop一种方法是更改您的视图以从函数中获取列表,因此过滤器始终被调用:例如:谢谢,我非常感谢您的帮助。我已经投票,但我是新用户,只有在我获得15分的声誉后才会显示我的投票。我已经投票,但我是新用户,只有在我获得15分的声誉后,它才会显示我的投票。