2013-10-05 42 views
0

我正在通過使用Marionette.js的項目工作,但我遇到了障礙。 我的模特代表由送貨員駕駛的旅程的一段路程。每個型號都有 pick_location,pickup pickup _時間,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,d之間travel_distance eliveries
  • D2時TRAVEL_TIME(挑下降),travel_distance(拾掉落)完成時

再總結列。

在我想結束之和可能與collection.reduce定義

的時間和距離位置之間的模型中的計算應該是直線前進很容易地完成。

我遇到的掛斷是計算涉及模型之間的計算和在視圖中顯示計算的行的中間值。

回答

0

它看起來對我來說,你基本上每一行呈現相同的信息:

| Context | Travel Time | Travel Distance | 

哪裏上下文或者是交付或過境。您可以在創建集合時通過向集合中注入代表運輸模型的新對象來調用一些小技巧。

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/

+0

這是完美的!非常好的方法和小提琴確實有幫助。 – t3living