그림과 같이:
1. 위의 "추가" 버튼을 클릭하면 왼쪽의 테이블이 동적으로 추가됩니다. 왼쪽에 있는 테이블의 행을 클릭하면 왼쪽과 오른쪽에 일대다 관계가 있는 오른쪽에 테이블이 생성됩니다(행 수에는 제한 없음).
2. 왼쪽에 새 행을 추가하려면 독립된 개체를 만든 다음(각 행이 다른 개체에 해당함을 의미) 오른쪽에 있는 추가를 클릭하면 새로 생성된 행에 여러 드롭다운 메뉴가 표시됩니다. 예, 사용자가 선택을 마친 후 클릭하여 보고서 작성을 시작합니다. 보고서 작성 시작 버튼을 클릭하면 오른쪽의 데이터와 왼쪽의 데이터가 개체에 연속적으로 저장되어야 합니다. 왼쪽에. (왼쪽의 각 행은 개체에 해당합니다)
3. 왼쪽 및 오른쪽 테이블 위에 '삭제' 버튼이 있습니다. 왼쪽의 '삭제' 버튼을 클릭하면 이 행의 저장 개체가 삭제됩니다. 오른쪽에 해당하는 데이터는 삭제되지 않습니다. 오른쪽 행을 선택하고 '삭제'를 클릭하면 오른쪽 행의 데이터 저장소만 왼쪽 개체에서 삭제됩니다.
프레임워크:
사용된 부트스트랩 jQuery
코드:
으아악js 코드:
으아악
내 생각을 간략하게 설명하겠습니다.각 DOM 구조는 데이터 객체를 유지합니다, HTML 구조가 다음과 같다고 가정합니다(emmet 구문).
으아악그런 다음:
위 내용은 세 가지 구성요소로 나누어져 있습니다
.app-test
모든 납세자 데이터를 관리할 책임이 있습니다(예: 왼쪽 테이블).양쪽에 있는 모든 tr 는 작은 구성 요소로 간주될 수 있습니다. 참새는 작지만 모든 내부 장기를 가지고 있습니다.
;
대략적인 구현은 다음과 같습니다.整个功能组件 > 左侧 tr 组件 + 右侧 tr 组件
으아악
오른쪽에 다음과 같은 납세자 신고 유형을 추가하세요.새 납세자를 생성하려면 왼쪽의 새 버튼을 클릭하세요.
TaxesReport
으아악으아악삭제할 때 해당 tr 구조를 삭제하고 tr에 해당하는 데이터를 삭제하는 것 외에도 관련된 두 데이터 개체(왼쪽의)가 값 매개 변수를 설정합니다.
정적 데이터(데이터베이스에서 가져오지 않은 기본 키 식별이 있는 데이터)가 있을 수 있고 배열의 항목을 삭제하면 배열 첨자가 손실될 수 있으므로 가장 좋은 방법은 생성 가능한 데이터를 생성하는 것입니다. 생성된 구성 요소(왼쪽 또는 오른쪽)에 고유 식별자를 생성하고 추가하는 데 사용되는 중복되지 않는 값 방법입니다.데이터 캐시를 생성하고 키 모델 형식으로 데이터를 저장합니다. 오른쪽 모델에 해당 데이터를 저장하는 어린이가 있습니다
왼쪽으로 전환할 때 키-모델 데이터 캐시에서 직접 해당 model.children을 찾아 오른쪽에 목록을 다시 그립니다
왼쪽에 추가하거나 삭제할 때는 키 모델 데이터 캐시에서 추가하고 삭제하면 됩니다
오른쪽에서 추가, 삭제 시에도 마찬가지입니다. 이때 해당 모델을 찾을 수 있습니다.children
jQuery를 사용하기 때문에 jQuery는
형태로 각 행(왼쪽)의 DOM에 직접 첨부할 수 있습니다. 오른쪽인지 아닌지 이 아이디어입니다. 먼저 코드를 적어보세요data()
를 통해 DOM에 데이터를 첨부할 수 있으므로 위의 key-model은 각 모델을