2013-06-01 2 views
0

나는 다음과 같은 코드가 내 ViewModel을 내녹아웃 매핑 - 객체가 속한 배열에서 객체를 제거하는 방법?

// 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은 확실하지 않았습니다. 루트 viewmodel에 저장했습니다.

+0

신난다, thanks Richard – RobVious

관련 문제