좋습니다. 나는 새로운 MVC4 프로젝트에서 KO를 처음으로 시도하고있다. 나는 가깝지만 뭔가 약간 벗어났다. 거주하는 녹아웃 천재 중 한명이 기꺼이 들어가서 나의 불행에서 나를 구 해주길 희망한다!KnockoutJS는 종속 된 관찰 가능 객체의 변경을 반영하지 않습니다.
나는 (실제 변수 이름이 다른) 내 페이지에서 다음 JS 포함 시켰습니다 -
$(document).ready(function() {
var viewModel = ko.mapping.fromJS(@Html.Raw(Json.Encode(Model)));
viewModel.Person.Name = ko.computed(function() {
return this.Nickname();
}, viewModel.Person);
ko.applyBindings(viewModel);
});
을 그리고 더 페이지 아래로 나는이 텍스트 상자가 - 이미
@Html.TextBoxFor(model => model.Person.Nickname, new { data_bind = "value: Person.Nickname" })
@Html.TextBox("Test", null, new { data_bind = "value: Person.Name" })
Person.Nickname을 MVC 모델의 값을가집니다. 그 값이 "너클 헤드 (knucklehead)"라고 가정 해 봅시다. Person.Name이 MVC 모델에 없습니다.
초기 페이지로드시 두 텍스트 상자의 값은 모두 "너클 헤드"입니다. 그것은 좋은 출발입니다. 그러나 닉네임을 다른 것으로 변경하면 이름이 업데이트되지 않습니다. 왜?
렌더링 된 출력을보고 http://jsfiddle.net/rniemeyer/kLqzj/와 일치하는지 확인합니다. 또한,'Person.Name'에 바인드 된 필드에 대한 업데이트가 작동하지 않습니다. 이는 계산 된 (쓰기 가능한 계산이 아닌)이기 때문입니다. 그러나 "닉네임"필드에 대한 업데이트는 "이름"필드에 반영되어야합니다. –