2017-02-02 3 views
0

angular-input-modified 모듈을 사용하여 사용자가 양식을 변경했는지 추적하려고합니다. 비헤이비어를 전역 적으로 비활성화 한 다음 필요한 양식 필드에만 수정 가능한 비헤이비어를 추가하여 포함 정책을 사용합니다. 내 문제는 컬렉션 내부의 변경 사항을 추적하는 것입니다. 좀 더 구체적으로 나는 항목의 컬렉션을 가지고 있으며 사용자가 해당 속성을 표시 할 항목을 선택할 때 표시됩니다. 사용자가 속성을 변경하면 저장 버튼을 활성화해야합니다. 해당 내용ng 스위치 및 각도 입력 수정 동작

<div class="form-group subSection" bs-modifiable="true">    
    <input type="checkbox"       
      ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> </div> 

그러나 변경하려면이 방법 원인과 체크 박스가 표시됩니다 컬렉션 항목의 사용자 선택에 따라 지금

  COLLECTIONS 
      <select ng-model="wiDevCtrl.currentCollection" 
        ignore-dirty 
        ng-options="opt as opt.Name for opt in wiDevCtrl.device.Collections"></select> 

그리고 angular-에 플래그를 '수정' 지금까지 나는이 시도 분명히 콜렉션이 변경되었을 때 $ pristine 값과 같이 저장된 것과는 다른 체크 박스에서 (바인딩을 통해) 값을 변경하기 때문에 입력 수정 모듈을 'true'로 설정합니다.

하지만 각 콜렉션마다 "peronal"체크 박스를 만들면 문제가 해결됩니다. 스위치를 사용해 보았습니다 :

<div class="form-group subSection">    
      <div ng-switch on="wiDevCtrl.currentCollection.Name" bs-modifiable="true"> 
       <div ng-switch-when="ng-switch-default"></div> 
       <div ng-switch-when="1"> 
        <input type="checkbox"        
          ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> 
       </div> 
       <div ng-switch-when="2"> 
        <input type="checkbox"        
          ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> 
       </div> 
       <div ng-switch-when="3"> 
        <input type="checkbox"        
          ng-model="wiDevCtrl.currentCollection.IsTriggerImmediately" /> 
       </div>     
      </div> 
     </div> 

그 후 나는 한 가지를 제외하고 거의 올바른 행동을 취했습니다. 체크 박스를 변경하면 '수정'이 올바르게 설정됩니다. 하지만 다른 콜렉션으로 전환하고 'masterValu'를 반환하면이 체크 박스가 $ pristine을 호출하는 것과 반대로 바뀌었지만 그렇게하지는 않습니다. 이전 컬렉션으로 돌아가서 체크 박스를 원래 '수정 된'상태로 되 돌리면 'false'가됩니다. 분명히 일어나지 않습니다. 어떤 아이디어? 감사.

당신은 탐색 선택에 Maracuya을 클릭 Plunker 예 here

  1. 을 찾을 수 있습니다. 확인란을 선택하십시오. Maracuya와 같은 마스터를 관찰하십시오 : "거짓"및 수정 됨 : 예.
  2. 이제 다른 과일을 선택하십시오.
  3. Maracuya로 돌아 오십시오. Observe MaracuyaLike Master가 "사실"이되고 수정 됨 : 아니오. 수정 된 상태의 양식이며 변경되지 않은 상태로 돌아갈 방법이 없습니다.

답변

0

이 라이브러리의 저자에게 연락했습니다. 분명히 라이브러리는 고정 요소에 대해서만 작동합니다. ng-Switch and ng-If는 DOM 요소를 다시 작성하므로 모두가 기본값으로 재설정됩니다. 그것을 해결하는 유일한 방법은/고정 요소와 쇼에 동적으로 변경 다음과 같이 적절하게 숨기는 것입니다 :

<input name = "myFruits" ng-repeat="x in user.favoriteFruit" ng-show="user.favoriteFruit.id == $index" type="checkbox" ng-model="fruits[$index].like" bs-modifiable="true"> 

찾을 쿵 수 here