模型间的骨干计算

时间:2013-10-05 03:12:18

标签: backbone.js underscore.js marionette

我正在使用Marionette.js完成一个项目,但我遇到了障碍。 我的模特代表了一个由送货员驱动的旅程。每个型号都有 pick_location,pickup_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(选择放弃),travel_distance(选择放弃)
  • 交货之间的travel_time,交货之间的travel_distance
  • d2 travel_time(选择放弃),travel_distance(选择放弃)

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

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

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

我正在计算的中断值是计算模型之间的计算并在视图中显示计算出的行。

1 个答案:

答案 0 :(得分: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/