2013-06-01 27 views
0

我有以下代碼:基因敲除映射 - 如何從它所屬的數組中移除一個對象?

// viewModel 
var cardViewModel = function (data) { 
    var self = this; 
    ko.mapping.fromJS(data, {}, self); 
    self.isNew = ko.observable(false); 
    // etc 
} 
// mapping 
var mapping = { 
    create: function (options) { 
     var innerModel = ko.mapping.fromJS(options.data, { 
      'cards': { 
       create: function (options) { 
        //debugger; 
        return new cardViewModel(options.data); 
       } 
      } // etc 
     }); 
// data 
var setData = dataservice.getSet(); 
var observableData = ko.mapping.fromJS(setData, mapping); 

在我的視圖模型,我想補充是這樣的:

self.save = function() { 
    var card = new cardViewModel(dataservice.save(this)) // works fine 
    innerModel.cards.push(card) // doesn't work because I don't have access to innerModel from the card viewModel 
} 

現在我只是觸發距離的ViewModels事件和聽他們來自innerModel,但是這會變得有點混亂,並且想要查看是否有任何方式從setViewModel訪問innerModel.sets()。

回答

0

我會組織它有點不同 - 這是否做你想要的?

var cardViewModel = function (data) { 
    // ... 
}, 

cardMapping = { 
    create: function(options) { 
     return new cardViewModel(options.data); 
    } 
}, 

viewModel = function() { 
    var self = this; 

    var setData = dataservice.getSet(); 
    self.cards = ko.mapping.fromJS(setData, cardMapping); 

    self.save = function() { 
     var card = new cardViewModel(dataservice.save(this)); 
     self.cards.push(card); 
    }; 
}; 

$(function() { 
    var vm = new viewModel(); 
    ko.applyBindings(vm); 
}); 

我不確定你試圖把你的保存功能放在哪個viewmodel上 - 我把它放在根視圖模型上。

+0

太棒了,謝謝理查德 – RobVious

相關問題