angularjs ng-repeat with Filter或ng-if条件

时间:2015-01-15 18:13:51

标签: angularjs angularjs-ng-repeat ng-repeat

如果是Name或Value,我想渲染文本。如果它是createdate或enventId,我不想循环。我尝试使用Filter和ng-if条件。它不起作用。

HTML CODE

  <tr ng-repeat="event in events | filter:Name ">
     <td >{{event.Name}} : </td>
     <td>{{ event.Value }}</td>
  </tr>

JS CODE

Events: [
    {
      CreatedTime: "/Date(1420757322810-0800)/",
      EventId: 13,
      Name: "AdGroupId",
      Value: "2367898"
    },

    {
      CreatedTime: "/Date(1420757322810-0800)/",
      EventId: 13,
      Name: "AdGroupId",
      Value: "2367898"
    }
]

我希望结果应该是

AdGroupId:2367898

2 个答案:

答案 0 :(得分:0)

假设您正在寻找一个过滤器来删除其中没有名称和值属性的事件。

以下是您的示例:

控制器:

$scope.filterNameValue = function(e){
    if(angular.isDefined(e.Name) && angular.isDefined(e.Value)) 
       return e;
  };

HTML

<table>
  <tbody>
    <tr ng-repeat="event in events | filter: filterNameValue">
       <td >{{event.Name}} : </td>
       <td>{{ event.Value }}</td>
    </tr>
  </tbody>
</table>

Working Sample here

答案 1 :(得分:0)

假设您要问的是如何排除既没有名称也没有值的项目,那么您需要一个自定义函数。这应该足够了:

$scope.filterEvents = function(e){
    return e.Name || e.Value;
};

然后:

<tr ng-repeat="event in events | filter:filterEvents">
  <td >{{event.Name}} : </td>
  <td>{{ event.Value }}</td>
</tr>

Example


或者,如果您要根据指定的名称和/或值过滤值,则可以这样做:

$scope.filterEvents = function (e) {
    return ($scope.Name || $scope.Value) && 
           (!$scope.Name || $scope.Name === e.Name) && 
           (!$scope.Value || $scope.Value === e.Value);
};

(HTML与上述相同)

Example