2012-12-03 5 views
1

WORKING DEMO 나는 다음과 같은 문제에 직면하고있어

:
내가 JSON 배열이 있습니다
knockout.js (2.2.0)

self.customExportFileArray = ko.observableArray([ 
     { 
     "IncludeInExportConversionTypesSelectList" : 
      [ 
      { 
       "ConversionGroupID" : 1, 
       "Title" : "Quote Start - Auto" 
      }, 
      { 
       "ConversionGroupID" : 2, 
       "Title" : "Quote Finish - Auto" 
      }, 
      { 
       "ConversionGroupID" : 5, 
       "Title" : "Sales Data" 
      } 
      ], 
     "ChooseFromConversionTypesSelectList" : [], 
     "FileName" : "Template1", 
     "FileFormat" : "Excel", 
     "FilterSettings" : true, 
     "ComparisonMetrics" : false 
     }, 
     { 
     "IncludeInExportConversionTypesSelectList": 
      [ 
      { 
       "ConversionGroupID" : 1, 
       "Title" : "Quote Start - Auto" 
      }, 
      { 
       "ConversionGroupID" : 5, 
       "Title" : "Sales Data" 
      } 
      ], 
     "ChooseFromConversionTypesSelectList": 
      [ 
      { 
       "ConversionGroupID" : 2, 
       "Title" : "Quote Finish - Auto" 
      } 
      ], 
     "FileName" : "Template2", 
     "FileFormat" : "CSV", 
     "FilterSettings" : false, 
     "ComparisonMetrics" : true 
     } 
    ]); 
} 


그리고 하나의 드롭 다운, 텍스트 상자, 몇 개의 라디오 버튼 및 두 개의 목록 컨트롤이 포함 된 HTML 코드가 있습니다. 요점은 다음과 같습니다. 드롭 다운에 배열 길이가 customExportFileArray이고 항목 이름 (optionsText)이 배열의 속성 인 FileName이어야합니다. (지금 작동하는 것처럼 보입니다). 그런 다음 항목을 드롭 다운에서 변경하는 경우 array (Template1)의 FileName 속성으로 파일 이름 입력란을 채우고 Excel 라디오 버튼을 선택하고 필터 설정 유지를 선택해야하며 호환성 측정 항목을 선택 취소하고 '전환 유형'을 선택해야한다고 가정 해 봅니다. 선택 시작에서 IncludeInExportConversionTypesSelectList 배열 (텍스트 = 제목)의 목록을 포함해야합니다
하지만 내 HTML 코드에서 볼 수있는 뭔가 잘못하고 있지만 정확히 무엇을 모르겠어요. 드롭 다운에서 항목을 변경하여 특정 데이터를로드하지는 않지만 모든 것을 올바르게 수행하고 있다고 생각했습니다.
추가 질문 : 특정 항목 배열에 대한 변경 사항을 저장하는 방법 (예 : 이름을 변경하거나 라디오 버튼을 변경 한 경우).
도움을 주시면 감사하겠습니다.

미리 감사드립니다.

답변

3



WORKING DEMO
는 그런 다음 선택한 개체에 변경 필드를 바인딩, 선택한 값을 저장하기 위해 'SelectedTemplate'같은라는 관측 재산에 대한 드롭 다운의 가치를 구속해야합니다

당신이 볼 수 있듯이 http://jsfiddle.net/ptmwr/11/

, 값이 이제 드롭 다운의 결합 포이 다음과 같이

<select data-bind="options: customExportFileArray, optionsText: function(item) { return item.FileName }, value: selectedTemplate"> 

<input type="text" data-bind="value: selectedTemplate().FileName"/> 

self.selectedTemplate = ko.observable(); 
self.customExportFileArray = ko.observableArray([ 
     { 
     .... 

나는 당신의 jsfiddle을 수정 한 이 새 속성에서 nts를 사용하고 optionstext가 값으로 객체를 사용하도록 바인딩하는 방식을 변경해야했습니다.

편집 :

은 또한 그들이 정말 위해 설계되지 않은의 RadioButton의 선택 속성에 부울을 결합하려고합니다. 불리언 값 프로퍼티에 바인드하려면 체크 박스 컨트롤을 사용하거나 켜기 또는 끄기를 사용해야합니다.

희망이 도움이됩니다.

+0

감사합니다. Roysvork !!! 마지막 질문은 현재 질문을 닫을 것입니다. 귀하의 추천에 의해 jsFiddle을 업데이트했지만 필터 설정, 비교 측정 항목 및 내보내기 목록에 포함이 전혀 작동하지 않는 이유를 이해할 수 없습니다 [업데이트 된 데모 링크] (http://jsfiddle.net/ pkysylevych/ptmwr/12 /). 고맙습니다. – Pavlo

+0

난 그냥보고있어 ...하지만 내 심령 능력을 테스트하려면 오른쪽 괄호를 가지고 있니? :) –

+0

아, 괄호가 잘 보이지 않습니다. 무슨 일이 일어나고 녹아웃은 부울 값에서 라디오 버튼에 대한 값으로 정의한 값으로 매핑하는 방법을 알지 못합니다. 그 값을 설정하면 잘 작동합니다. –