-1

ng-repeat를 사용하여 확인란을 생성하고 해당 정보가 존재하는지 여부에 따라 초기 상태를 확인하거나 선택 취소 할 수 있습니다. 내 문제는 그 altghough 그것은 초기 체크/체크되지 않은 상태를 올바르게 보여줍니다, 내가 '사전 검사'된 상자를 선택 해제하면 상자가 물리적으로 선택 취소되지만 모델은 변경되지 않습니다. 그런 다음 다시 확인하고 모델은 변경되지 않지만 정확합니다. 그런 다음 다시 선택을 취소하면 모델에서 올바르게 지워지고 올바르게 작동합니다. 며칠 동안이 문제를 해결하기 위해 노력해 왔으며 완전히 막혔습니다. 내가 바보 같은 짓을하는 사람은 누구나 볼 수 있니? 내 감정은 초기화 문제이지만 지금은 너무 가깝다. 감사!ng-check 처음으로 업데이트하지 않음

<!-- if this is a checkbox to be drawn --> 
<div ng-if="option.option_type=='checkbox'"> 
    <label class="item-checkbox-right"> 
    {{option.caption}} 
    <!-- handle multiple options --> 

    <!-- if answered_options[n]weight exists, make option.ans = weight --></label> 
    <ul ng-repeat="opti in questionpart.survey_answer[0].answered_options"> 
    <li style="list-style: none; display: inline"> 

    <!-- if option is set in the received data, set it in the model --> 
     <div ng-if="opti.id == option.id"> 
     <div ng-init="option.ans = option.weight"></div> 
     </div> 
    </li> 
    </ul> 
    <label class="item-checkbox-right"> 
     <!-- show the checkbox and bind to option.ans--> 
     <input class="checkbox-light" 
     type="checkbox" 
     name="{{questionpart.id}}" 
     ng-false-value="0" 
     ng-true-value="{{option.weight}}" 
     ng-model="option.ans" 
     ng-checked="option.ans==option.weight" /> 
    </label> 
</div> 
+0

intial 값이 ng-false-value 또는 ng-true-value로 평가되는 경우, 확인란을 누르면 angle 값을 false 및 true로 변환합니다. {{option.ans}}을 인쇄하여이를 확인할 수 있습니다. 비슷한 문제가 있었는데, 해결책은 함수에 구문 분석을 추가하고 체크 상자를 클릭하여 호출하는 것입니다. 바라건대 간단한 솔루션이 있지만 적어도 현재 문제의 원인이 무엇인지 알 것입니다. –

+0

고마워요 - option.ans 모델을 출력 해 보았습니다.하지만 상자가 처음 선택되지 않은 경우를 제외하고 올바른 값을 보여 주며 변경되지 않습니다. 함수와 ng-click을 통해 구문 분석을 시도 할 것입니다. 다른 어떤 아이디어라도? :-) –

+0

Gah, 각도로 확인란의 상태를 확인하는 방법은 모델을 통해하기 때문에 내가 원하는 것을 할 수 없습니다. 이것은 너무 초조하다! –

답변

0

여기는 단순하지만 귀엽지 만 example입니다. 확인란에 대한 기본 각도 지시문을 사용하면 절대로 효과가 없습니다.

은 자신에 의해 모든 체크 박스에 대한 논리를 처리 제가 컨트롤러에서 할 기본적으로

$scope.data = [{checkboxValue: 0}, {checkboxValue: 1}, {checkboxValue: 2}]; 
$scope.dataCopy = angular.copy($scope.data); 

$scope.setCheckboxValue = function(checkbox, index) { 
    checkbox.checkboxValue = checkbox.checkbox ? $scope.dataCopy[index].checkboxValue : 0; 
} 

$scope.parseCheckboxes = function() { 
    for(var i = 0, len = $scope.data.length ; i < len ; i++) { 
     $scope.data[i].checkbox = $scope.data[i].checkboxValue > 0 ? true : false; 
    } 
} 

$scope.parseCheckboxes(); 

app.js. 나는 배열의 복사본을 생성하여 false에서 true로 토글 할 때 초기 값을 얻는다.

나는 체크 박스의 상태를 추적하는 (true 또는 false) 모든 객체에 추가 키를 만들어 실제 값을 간섭하지 않습니다.

초기 표시는 개체 배열을 구문 분석하고 값에 따라 모든 확인란을 true 또는 false로 설정하여 수행됩니다.

HTML

<body ng-controller="MainCtrl"> 
    <label ng-repeat="d in data track by $index"> 
     <input type="checkbox" ng-model="d.checkbox" ng-change="setCheckboxValue(d, $index)" /> 
     {{d.checkbox}} 
     {{d.checkboxValue}} 
     <br> 
    </label> 
</body> 

HTML 부분은 매우 자명하다.

아마도이 문제를 해결하는 더 좋은 방법이있을 수 있습니다. 그러나 이것이 내가 생각해 낸 해결책입니다. 예쁘지는 않지만 작동합니다.