2013-08-17 3 views
0

좋습니다. 나는 새로운 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 모델에 없습니다.

초기 페이지로드시 두 텍스트 상자의 값은 모두 "너클 헤드"입니다. 그것은 좋은 출발입니다. 그러나 닉네임을 다른 것으로 변경하면 이름이 업데이트되지 않습니다. 왜?

+3

렌더링 된 출력을보고 http://jsfiddle.net/rniemeyer/kLqzj/와 일치하는지 확인합니다. 또한,'Person.Name'에 바인드 된 필드에 대한 업데이트가 작동하지 않습니다. 이는 계산 된 (쓰기 가능한 계산이 아닌)이기 때문입니다. 그러나 "닉네임"필드에 대한 업데이트는 "이름"필드에 반영되어야합니다. –

답변

1

그리고 대개의 경우 ... 내가 이것을 게시하고 다음 날 신선한 눈으로 돌아 왔을 때, 나는 스스로 고쳐 줬다. 이 문제는 오타였습니다. 항상 바보 같지 않니?

RP Niemeyer를 포함하여이 기사를 읽는 데 시간을내어 주신 모든 분들께 감사드립니다.

관련 문제