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

angularjs ng-repeat with Filter or ng-if condition

如果是名称或值,我想呈现文本。如果它是 createdate 或 enventId,我不想循环。我正在尝试使用 Filter 和 ng-if 条件。它不起作用。

HTML 代码

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

JS代码

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

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

我希望结果应该是

广告组 ID :2367898

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

这是给你的示例:

控制器:

$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

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

$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


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

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

(HTML同上)

Example