2015-01-06 2 views
0

나는 제출할 준비가 된 각진 폼이 있습니다.각도 체크 박스가 제출되지 않았습니다.

<form name="productForm" class="form-horizontal" role="form" ng-submit='action(productForm.$valid)' novalidate> 
    <div class="form-group"> 
     <input type='checkbox' name='subtract' data-ng-model='product.subtract'/> 
    </div> 
</form> 

문제는 데이터베이스에이 일의 기본값은 내가 나를 위해 데이터베이스에 0을 기록합니다 확인란을 선택하지 않으면 내가 가정 1.

입니다. 그러나 어떻게 든이 입력 체크 박스는 제출되지 않고 db는 정의 된 디폴트 값 '1'을 취합니다.

누군가 여기 무슨 일이 일어나고 있는지 알고 계십니까? 감사! 이 같은 컨트롤러의 범위 변수 product.subtract를 초기화 해달라고처럼

답변

2

$scope.product = {}; 
$scope.product.subtract = 0; //not selected by default 

<input type='checkbox' name='subtract' data-ng-model='product.subtract' ng-true-value="1" ng-false-value="0" /> 

ng-true-value & ng-false-value

을 보이는 것은 선택에 따라 체크 박스를 true false 상태를 나타냅니다.

당신이 컨트롤러 내에서 범위 변수를 초기화하거나 ng-init를 사용하지 않는 경우

는 당신이 ng-model에 변경 한 때까지 더 범위 변수가 생성되지있다. 그래서 여기에 범위 변수가 없다면 체크 박스를 체크하지 않고 양식을 제출하면 $scope.product.subtract이라는 스코프 변수가 없습니다.

+0

현재 작동 중입니다. 알았다!! –

+0

위대하고 기꺼이 도와주세요 :) –

0

이 외에도. 나는 "그 문제를 일으킬 수있는 체크 박스에 부울을 사용하여 발견했습니다.

이런 식으로 뭔가가

<input type='checkbox' ng-model='mgModel' ng-true-value="'true'" ng-false-value="'false'" /> 

하지만 경우에 작동합니다 문자열 (또는 INT)로 모델을 변환 한 것으로 입력을 변경 직선 부울을 사용하는 것이 사실. 당신은 그것을 그래서이 유선 바인딩 문제

그래서
<input type='checkbox' ng-model='mgModel' ng-true-value="true" ng-false-value="false" /> 

을 실패하거나 발생할 등 부모 컨트롤러로 변경을 보낼 수 있습니다 찾을 수 있습니다 당신은 바인드 A를 문제가있는 경우 true/false 값. 문자열 또는 int로 변경해보십시오.

관련 문제