2017-09-27 8 views
1

2 개의 그리드가 포함 된 뷰가 있습니다. 그리드는 2 개의 모델로 뒷받침됩니다. 2 모델 사이의 관계는 일대 다 (열쇠없는 연관)입니다.Extjs6 업데이트로 인해 더티 플래그가 지워지지 않습니다.

모델 :

Ext.define('TestApp.model.association.Project', { 
    extend: Ext.data.Model, 
    fields: [ 
     { 
      type: 'int', 
      name: 'id' 
     }, { 
      type: 'string', 
      name: 'project' 
     }, { 
      type: 'number', 
      name: 'allocation' 
     }, { 
      type: 'string', 
      name: 'comments' 
     }, { 
      type:'string', 
      name:'state' 
     } 
    ] 
}); 


Ext.define('TestApp.model.association.User', { 
    extend: Ext.data.Model, 
    fields: [{ 
     type: 'int', 
     name: 'id' 
    }, { 
     type: 'string', 
     name: 'employee' 
    }, { 
     type: 'string', 
     name: 'location' 
    }, { 
     type: 'string', 
     name: 'department' 
    }, { 
     type: 'string', 
     name: 'manager' 
    }, { 
     type: 'number', 
     name: 'allocation' 
    }], 
    hasMany: [{ 
     model: 'TestApp.model.association.Project', 
     // Note: use of 'role' is preferred over 'name' 
     role: 'projects', 
     // Define role for inverse association 
     inverse: { 
      role: 'user' 
     } 
    }] 
}); 

내가 자식 부분에서 하나 개의 행을 편집 한 후, 나는 (더러운 = TRUE) 불량으로 부모의 기록을 설정 한 후 나는 가게를 동기화 할 수 있습니다. 서버에서 필요한 작업을 수행 한 후 응답을 다시 보냅니다. 응답을받은 후 하위 부분의 더티 플래그는 사실로 유지됩니다.

연결이없는 경우 서버에서 응답을 받으면 더티 플래그가 자동으로 지워집니다.

자세한 내용은 fiddle을 생성했습니다.

업데이트 후에 연관에서 더티 플래그를 지우는 방법은 무엇입니까?

편집

더 나은 내 문제를 표시하는 바이올린 업데이트되었습니다. 단계 재현 :

  • 선택 신원 미상의 기록을 상단 패널 하단 패널에서
  • 선택 애플
  • 편집 할당 및 의견 열 (사용 가능한 행 편집 플러그인)에서. 두 번째 그리드

의 도구 모음에서 확인을 누르

  • 을 눌러 저장 버튼이 요청은 서버로 전송됩니다. 서버는 json으로 응답합니다 (서버 응답은 항상 동일하게 하드 코드됩니다).

    클라이언트가 응답에서 수신 한 하위 레코드를 설정하고 더티 플래그를 지울 수 없습니다.

    왜 이렇게하고 있습니까? 이거 버그 야?

  • +0

    더러운 플래그를 설정하기위한 서버에 따라 당신이 의존하는 코드를 찾거나 할 수 있습니다. – Tejas

    +0

    @ Tejas1991 귀하의 진술을 이해하지 못했습니다. 변경 내용이 포함 된 json을 서버에 보냅니다. DB에 저장 한 후 레코드가 들어있는 json으로 서버가 응답합니다. 그것은 휴식 응용 프로그램입니다. 일부 변경을 수행 한 후에 더티 상태가 클라이언트에서 설정됩니다. – florin

    +0

    서버의 데이터를 프로그래밍 방식으로 설정하는 대신 필드의 더티 플래그를 설정하지 않는 이유는 무엇입니까? 서버의 데이터를 설정하는 코드에 대해 한 가지 말해 줄 수 있습니까? – Tejas

    답변

    0

    연관을 설정하는 동안 모든 연관된 모델은 동일한 스키마에 속해야합니다. 이를 참고하여 코드를 약간 변경했습니다. 저장 버튼이 작동하는지 확인하십시오. 또한 초기 테스트를위한 코드 일부를 주석 처리했습니다.

    는 부모 -> 아이를 위해 더러운 플래그를 설정하는 것이 당신에게 코드를 here

    +0

    스키마가 포함 된 기본 모델을 추가하여 제안을 시도했습니다. 그것은 작동하지 않았다. 필요에 따라 요청 페이로드를 유지하기 때문에 주석이 달린 코드가 필요합니다. – florin