0

我正在使用 Marionette.js 完成一个项目,但我遇到了障碍。我的模型代表了由送货员驾驶的一段旅程。每个模型都有pick_location、pick_time、drop_location、drop_time

我不仅需要能够计算交付期间的行进距离,还需要计算交付之间的距离。所以如果

  • d1 - pick_loc-1, pick_time-1, drop_loc-1, drop_time-1, ....
  • d2 -pick_loc-2、pick_time-2、drop_loc-2、drop_time-2、...等

我想制作一个显示

  • d1 - travel_time (pick to drop), travel_distance (pick to drop)
  • 交货之间的 travel_time,交货之间的 travel_distance
  • d2 travel_time (pick to drop), travel_distance (pick to drop)

然后在完成后对列进行求和。

我认为最后的总和可以通过 collection.reduce 定义轻松完成

模型内位置之间的时间和距离的计算应该是直截了当的。

我遇到的问题是计算涉及模型之间计算的中间值并在视图中显示计算的行。

4

1 回答 1

0

在我看来,您实际上是在每一行中呈现相同的信息:

| Context | Travel Time | Travel Distance |

其中 Context 是交付或运输。在创建集合时,您可以通过向集合中注入表示运输模型的新对象来调用一些技巧。

var Route = Backbone.Model.extend({
    defaults: {
        context: '',
        beginTime: '',
        endTime: '',
        beginLocation: '',
        endLocation: ''
    }
});

var Trip = Backbone.Collection.extend({
    model: Route,
    parse: function(data) {
        var out = [],
            last;
        _.each(data, function(route) {
            if (last) {
                out.push({
                    context: 'transit',
                    beginTime: last.endTime,
                    endTime: route.beginTime,
                    beginLocation: last.endLocation,
                    endLocation: route.beginLocation
                });
            }
            out.push(_.extend({ context: 'delivery' }, route));
            last = route;
        });
        return out;
    }
});

我这里有一个样本小提琴。 http://jsfiddle.net/ccamarat/jMt8B/

于 2013-10-05T15:10:54.207 回答