0

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定義で簡単に達成できます

モデル内の位置間の時間と距離の計算は簡単です。

私が抱えているハングアップは、モデル間の計算を含む中間値を計算し、計算された行をビューに表示することです。

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 に答える