0

工作:要显示来自 Json 的当前 id 中的数据:

var _getEventById = function(eventId) {

        var __findEvent = function(event) {
            return event.id === eventId;
        };

        return _.find(data.meeting.events, __findEvent);
    };

我想使用当前事件 ID 查找上一个和下一个 events.number。下面的代码不起作用。它写在模型内部。

  var _getNextEvent = function(eventNumber) {
  var nextEventNumber = data.meeting.events.number += eventNumber ;
  var nextEvent = _.find(event, function(event) {
    return event.number === nextEventNumber;
  });

  return nextEvent.id;
};


var _getPrevEvent = function(eventNumber) {
  var prevEventNumber = data.meeting.events.number -= eventNumber ;

  var prevEvent = _.find(event, function(event) {
    return event.number === prevEventNumber;
  });

  return prevEvent.id;
};

我尝试的是传递当前 events.id 并使用 Lodash 查找 events.number 并添加一个以查找下一个事件编号。使用 Next 事件编号返回其下一个 events.id。(减去以找到上一个事件 id)

JSON: "meeting": {
      "id": "SING_74",
      "name": "Singapore Racing",
      "runDate": "2017-10-04",
      "meetingNumber": 12,
      "closeDate": "2017-10-04",
      "open": true,
      "venue": "Overseas",
      "currentRaceId": "SING_74_2",
      "code": "RACE",
      **"events": [**
        {
          **"id": "SING_74_1",**
          **"number": 1,**
          "open": false,
          "status": "Closed"
        },
        {
          "id": "SING_74_3",
          "number": 3,
          "open": true,
          "status": "Open"
        },
        {
          "id": "SING_74_4",
          "number": 4,
          "open": true,
          "status": "Open"
        },
        {
          "id": "SING_74_5",
          "number": 5,
          "open": true,
          "status": "Open"
        },

实现:我试图以角度实现的是用户在赛车/事件上滑动时。它应该识别 ng-swipe-left 和 ng-swipe-right 并使用 nexteventid 或 preveventid 更新数据。

如果您分享任何输入或示例,我们将不胜感激。

4

1 回答 1

0

只需创建一个 id 数组

var event_ids = data.meeting.events.map(function(e){return e.id;}):

找到您当前的 id 索引,计算上一个和下一个:

Math.min()正在返回最小值,因此如果您位于数组的末尾,并且再滑动一次,它将返回数组的最后一个索引,event_ids.length-1因为它将低于current_id_idx+1

current_id_idx -1 < 0 ? 0 : current_id_idx -1确保数组的先前索引永远不会低于零

var current_id_idx = events_ids.indexOf(current_id);
var prev_idx = current_id_idx -1 < 0 ?  0 : current_id_idx -1;
var next_idx = Math.min(event_ids.length-1, current_id_idx +1);

最后得到下一个或上一个事件编号

 var prev_number = data.meeting.events[prev_idx].number;
 var next_number = data.meeting.events[next_idx].number;
于 2017-10-26T01:20:52.103 回答