2012-03-24 4 views
8

viewModel의 객체를 다른 유형 (예 : Person)으로 전환하고 싶습니다. 나는이 할 경우KnockoutJS - ViewModel 다시 바인딩

var personViewModel = function (person) { 
    var self = this; 

    self.id = person.id; 
    self.firstName = ko.observable(person.firstName); 
    self.lastName = ko.observable(person.lastName); 
    self.addresses = ko.observableArray(contact.addresses); 

    self.removeAddress = function (address) { 
    self.addresses.remove(address); 
} 
} 

와 함께 바인딩 :

ko.applyBindings(new personViewModel(person), $("#person")[0]); 

내가 두 번째 시간에 다른 객체와 바인딩 경우 처음에 잘 작동하지만, 첫 번째 바인딩 의지 사라지지 않아.

내 viewModel에서 개체를 쉽게 전환 할 수 있습니까?

답변

14

기본적으로 전체보기 모델을 관찰 가능하게하고 새로운 personViewModel 개체로 바꿔야합니다.

var viewModel = { 
    person: ko.observable() 
}; 

viewModel.person(new personViewModel(person)); 

ko.applyBindings(viewModel); 

그런 다음, 단지 등에서 새로운 사람을 교체 :

viewModel.person(new personViewModel(newPerson)); 
+0

다양한 솔루션을 같이 될 것이다. 아주 청초하고 단순합니다. viewModel에 전역 변수를 사용하는 것에 만족하지 못했지만이를 해결하는 방법을 알지 못했습니다. 고마워. –

관련 문제