2013-06-20 3 views
0

양식을 만드는 데 사용한 JSON 개체가 있습니다. 이 JSON 객체는 KnockoutJS에 의해 파싱됩니다.양식으로 표시되는 JSON 개체를 업데이트하는 방법

이제 양식을 수정할 때 JSON 개체를 양식의 수정 내용에 따라 업데이트하려고합니다. 문제는 양식이 어떻게 될지 미리 알 수 없지만 JSON 개체에서 어떤 필드를 업데이트해야 하는지를 알고 있습니다.

나는 정말로 무엇이 최선의 방법인지 알지 못한다. 무언가가 바뀔 때마다 JSON 객체를 재구성 할 수 있다는 것을 알고 있지만 이것은 나쁜 생각과 지루한 과정처럼 보입니다.

각 JSON 개체 필드를 KnockoutJS의 양식 항목에 매핑하는 간단한 방법이 있습니까?

여기의 JSFiddle을 무엇 나는 현재하고 있어요 : http://goo.gl/ZBaV7

업데이트 : 값을 직접 접근하고있어

<input type="text" data-bind="value: $data.value, attr : { disabled: $data.disabled }" /> 

:이 줄 뭔가 흥미로운 것을 깨달았다

배열을 통해 ($ data.value). html로 배열의 특정 속성에 바인딩 할 수있는 방법이 있습니까? 배열이 재정렬되면 모든 것이 망가질 것입니다. 그러나 변경 될 수있는 유일한 것은이 속성이므로이 위험을 감수 할 준비가되어 있다는 것을 알고 있습니다. 즉

, 수동으로 값 변경이 마네의 ViewModel이 양식과 일치하면 같은

data-bind="onChange: $data.value = this.value" 
+0

JSFiddle을 사용하면 언제나 좋은 결과를 얻을 수 있지만 유일한 코드 소스는 아닙니다. 어쨌든 바이올린에 너무 많은 코드가 없으므로 게시물을 코드로 업데이트하십시오. (그렇다면 코드 줄을 코드로 바꾸지 말고 단지 바이올린 링크를 입력하십시오.) – nemesv

+0

예, 코드는 실제로 관련성이 없습니다. 단지 내가 말하고자하는 것을 보는 데 도움이됩니다. 대신 URL을 단축했습니다. – CoachNono

+0

[JSON 속성을 양식에 바인딩] 가능한 중복 (0120-333-2111) – davidbuzatto

답변

1

각 JSON 개체 필드를 양식 항목에 매핑하는 간단한 방법이 있습니까? KnockoutJS?

예, 올바르게하고 싶다고 생각하는 경우. 현재로서는 뷰 모델의 값이 관찰 가능하지 않으며 양식 값이 변경 될 때 자동으로 업데이트되지 않습니다. 이 매핑을 처리 할 플러그인이 있습니다.

http://knockoutjs.com/documentation/plugins-mapping.html

예 : 사용, 매핑 플러그인을 통해 뷰 모델을 만들 ko.mapping.fromJS 기능을 위의 코드에 뷰 모델의 생성을 교체하려면

을 ko.mapping :

var viewModel = ko.mapping.fromJS(data);

이 자동,745마다 관측 특성을 만들어데이터 속성. 그런 다음 서버에서 새로운 데이터를받을 때마다, 당신은 다시 ko.mapping.fromJS 함수를 호출 한 단계에서의 ViewModel의 모든 속성을 업데이트 할 수 있습니다

ko.mapping.fromJS(data, viewModel);

을 희망이 도움이 .

+0

여기에 "서버에서 새 데이터를받을 때마다 viewModel의 모든 속성을 업데이트 할 수 있습니다."라고 표시됩니다. 양식을 수정할 때 배열의 값이 업데이트 될 수 있습니까? 클라이언트 쪽이 수정되면 업데이트하는 것과 반대라고 할 수 있습니까? – CoachNono

+1

값 바인딩을 사용할 때 관찰 가능 속성에 바인딩하면 관찰 값 속성의 값이 양식 값이 변경 될 때 뷰 모델에서 업데이트됩니다. 지금 당장 가지고있는 문제는 관찰 할 수있는 것을 사용하지 않는다는 것입니다. 매핑 플러그인을 사용하여 초기 뷰 모델을 만들면 모든 속성이 ko.observable/ko.observableArray로 래핑되므로 양식 값이 변경 될 때 뷰 모델의 값이 업데이트되어야합니다. – bfuoco

+0

"사용자가 연결된 양식 컨트롤의 값을 편집 할 때마다 KO가보기 모델의 속성을 업데이트합니다." http://knockoutjs.com/documentation/value-binding.html – bfuoco

0

가능한 녹아웃 모델로 JSON 모델을 설정하는 가장 간단한 방법은 mapping 플러그인입니다.

또는 json 모델의 필드를 수동으로보기 모델의 ko.observable 멤버로 복사 할 수 있습니다.이 필드를 사용하면 더 많은 제어가 가능하며 읽기 전용 속성을 건너 뛰도록 선택할 수 있습니다.

관련 문제