2014-10-02 94 views
1

我設置了淘汰賽的ViewModel這樣當獲得指標值:使用自定義映射淘汰賽

var Schedule = function(data, parent) { 
    var self = this; 
    ko.mapping.fromJS(data, {}, self); 
    self.foo = 'bar'; 
    ... 
}; 

var ScheduleViewModelMapping = { 
    'schedules': { 
     create: function(options) { 
      return new Schedule(options.data, options.parent); 
     } 
    } 
}; 

ko.mapping.fromJS(data, ScheduleViewModelMapping, self); 

$(document).ready(function() { 
    var ViewModel = new ScheduleViewModel; 
    ko.applyBindings(ViewModel); 
}); 

時間表是一個數組,我想能夠獲取某處當前計劃的指標所以我可以將它傳遞給Schedule對象以及options.data和options.parent。

回答

3

我建議改變你的映射處理程序,以便它可以存儲一些狀態:

var ScheduleViewModelMapping = new (function(){ 
    var counter = 0; 

    this.schedules = { 
     create: function(options) { 
      //use counter as index as required 
      var s = new Schedule(options.data, options.parent); 
      counter++; 
      return s; 
     } 
    } 

    this.resetCounter = function() { 
     counter = 0; 
    } 
})(); 


ScheduleViewModelMapping.resetCounter(); 
ko.mapping.fromJS(data, ScheduleViewModelMapping, self);