그것은 앵귤러 JS의 첫날이기 때문에 나는 꽤 초보자입니다. 이해할 수없는 행동에 대한 몇 가지 설명을 요청하고 있습니다. "패널"로 구성된 양식을 작성하려고합니다. 각 패널에는 여러 폼 요소 (확인란, 라디오 그룹 등) 또는 메시지가 들어 있습니다. 처음에는 첫 번째 패널 만 보입니다. 사용자가 "행동"을 할 때마다 (무언가를 선택하고, 무언가를 선택하십시오). 이전 선택 사항 및 기타 데이터를 기반으로 패널이 표시됩니다 (때로는 더 많음).각도 JS보기가 제대로 업데이트되지 않습니다.
각 양식 요소는 컨트롤러 내부에 모델이 있습니다. 각 패널에는 ngShow 지시문과 컨트롤러에이 패널을 표시할지 여부를 반환하는 함수가 있습니다. 여기에 두 개의 패널 내 코드에서 작은 추출물 :
첫 번째 패널 (항상 표시 ROOT 패널)
<div class="panel panel-default" data-ng-show="true">
<div class="panel-heading">
<h3 class="panel-title">PLP</h3>
</div>
<div class="panel-body">
<div class="form-group">
<div class="col-xs-offset-0 col-xs-10">
<div class="radio">
<label><input type="radio" name="group" data-ng-model="choixPlp" value="plp1"> PLP 1</label>
</div>
<div class="radio">
<label><input type="radio" name="group" data-ng-model="choixPlp" value="plp2"> PLP 2</label>
</div>
<div class="radio">
<label><input type="radio" name="group" data-ng-model="choixPlp" value="plp3"> PLP3</label>
</div>
</div>
</div>
<p> {{choixPlp}} </p>
</div>
</div>
, 제 2 패널
<div class="panel panel-default"
data-ng-show="fmotifRetourCommentaires()">
<div class="panel-heading">
<h3 class="panel-title">Dépot</h3>
</div>
<div class="panel-body">
<div class="form-group">
<div class="col-xs-offset-0 col-xs-10">
<label> Motif Retour : {{motif}} </label>
<p>Commentaires</p>
<div class="textarea"></div>
<textarea rows="" cols=""></textarea>
<br />
<button type="submit" class="btn btn-default">Déposer</button>
</div>
</div>
</div>
</div>
App.js는
var app = angular.module('dynamicForm', []);
app.controller('MainCtrl', function($scope) {
$scope.choixPlp;
$scope.motif;
$scope.fmotifRetourCommentaires = function() {
if ($scope.choixPlp == "plp1") {
$scope.motif = "Degroupage Abusif";
return true;
}
if ($scope.choixPlp == "plp2") {
$scope.motif = "Deconstruction a tort";
return true;
}
return false;
};
});
내 문제는 두 번째 패널에서 변수 "motif"의 값이 뷰에 표시되지 않는다는 것입니다. 첫 번째 패널에서 내 선택을 변경합니다. 새로운 선택을 두 번 클릭하면 변경됩니다. 나는이 코드 부분을 추가 않았고 그것은 작동하지만 난 왜 이해가 안 ...
setInterval(function() {
$scope.$apply()
}, 500)
코드를 실행했습니다. 일하는 것 같습니다. 현재 문제는 옵션이 plp1, plp2, plp3이지만 모티프가 plpOrange 또는 plpAutresFai 인 경우에만 표시됩니다. 예를 들어 plp2를 plpAutresFai로 변경하면 ... –
처음 편집 할 때 올바른 코드를 포함하지 않아서 죄송합니다 – user2262196
두 번째 패널이 올바르게 표시되었지만 모티프가 올바르지 않습니다. – user2262196