从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较

Get data from a key value structure and compare it with value from an ng-repeat in AngularJS

本文关键字:ng 比较 AngularJS 获取 结构 键值 数据      更新时间:2023-09-26

两个基本问题,

1) 我有一个控制器,在那里我定义了一个带有键、值结构的列表,我想访问基于事件ID的事件名称,并将其记录在控制台中

$scope.events = [
  {eventID:3200, eventName:"Event One"}
  {eventID:3201, eventName:"Event Two"}
];

我试过这个:

  if($scope.events.eventID  == 3200) {
    console.log("Ok");
  }

但没有奏效:(

2) 然后在我的视图中,我有一个表,我在其中打印来自WS的数据,我想要的是根据$scope.events列表中的eventID在表上打印描述。events列表中,我的ng-reeat上有一个名为event的字段,它可以让我与列表中的事件ID进行比较,但我不知道如何做到这一点。

<tr ng repeat d in data>
  <td>d.Description</td>
  <td>d.anyValue</td>
</tr>

欢迎任何帮助,我真的很需要它。我是Angular的新手:)

在控制器中添加方法

$scope.search=function(obj){
  return obj.eventID  === 3200;
}

将其添加到查看

<tr ng-repeat="d in data | filter:search">
  <td>d.Description</td>
  <td>d.anyValue</td>
</tr>

对于问题1,请尝试使用此

if($scope.events[0].eventID  == 3200) {
  console.log("Ok");
}

用于使用此进行循环

angular.forEach($scope.events, function (value) {
  if (value.eventId === 3200) {
  {
    console.log('OK');
  }
});

对于问题2,创建helper函数以根据ID返回eventName。

$scope.getEventName = function (eventId) {
  var result = '';
  angular.forEach($scope.events, function (value) {
    if (value.eventID === eventId) {
      result = value.eventName;
      return false;
    }
  });
  return result;
}
<tr ng-repeat="d in (exportDataEventDesc.result.slice(5, exportDataEventDesc.result.length-2))">
  <td>{{d.Description}}</td>
  <td>{{d.anyValue}}</td>
  <td ng-bind="getEventName(d.merchMetrics.EVENT_ID)" style="text-align: left"></td>
</tr>