2017-03-09 4 views
0

간단한 Angular ng-show를 구현하려고하는데 코드가 작동하지 않습니다. 나는 아래 코드를 첨부하고있다.Angular ng-show가 뷰에 요소를 표시하지 않습니다.

HTML

<div ng-repeat="question in data.questions track by $index" ng-if="question.visible" class="slide"> 

    <md-radio-group ng-model="question.selectedAnswer" ng-if="vm.showSliderChecker"> 
    <md-radio-button ng-repeat="ans in question.answer track by $index" ng-value="ans._id" 
        ng-click="radioBtnClick({qId: question._id, ansId: ans._id})">{{::ans.description}} 
    </md-radio-button> 
    </md-radio-group> 




    <div class="wrapper" ng-show="vm.showSliderChecker"> 
<div class="toggle_radio"> 
<input type="radio" class="toggle_option" id="first_toggle" name="toggle_option" > 

<label for="first_toggle" class="widthEighth" ng-repeat="ans in question.answer track by $index" ng-value="ans._id" 
        ng-click="radioBtnClick({qId: question._id, ansId: ans._id}); showSliderClickedMessage()"><p> {{$index+1}} </p></label> 


    </div> 

</div> 

</div> 

각도 컨트롤러 vm.checkSliderForDisplay = checkSliderForDisplay;

function initController(){ 
    checkSliderForDisplay(); 
} 

function checkSliderForDisplay() { 
    if($stateParams.testType === "Stress_management"){ 
     vm.showSliderChecker = true; 

     console.log("The value of slider checker is true and here's proof ----> "); 
     console.log(vm.showSliderChecker); 
     } 
     else{ 
     vm.showSliderChecker = false; 
     console.log("Alas, the slider checker is just a lot of false advertising and nothing more."); 
     console.log(vm.showSliderChecker); 
     } 
} 

initController(); 

지금 여기에 문제가있다 :

콘솔 로그가 콘솔에 표시되지만 div의 모두가 숨겨있어. 나는이 웹 사이트에서 해결책을 찾아 보았고 몇 가지 세부 사항이 누락되었다고 생각하면서 여러 가지 조합을 시도했지만 효과가있는 것처럼 보일 수 있습니다.

+0

전체 HTML을 추가 할 수 있습니까? 특히 controller/view 섹션과 ng-app 섹션이 정의되어있는 곳은 어디입니까? – Juan

+0

'{{vm.showSliderChecker}}'를보기에 추가하면 정확한 값이 표시됩니까? 나는 당신이'vm'을 사용하고있는 것을보고,'controllerAs : vm' 또는'var vm = this;'를 사용하여 컨트롤러를 바인드 했습니까? –

+0

나에게 그것을 시키자 @Guan 또한, 나는 이미 그것을했다 daan.desmedt .. 내 대답을 편집하고 거기에 새로운 HTML을 게시하자. –

답변

0

<div ng-show="!vm.showSliderChecker">Some stuff that I wanna hide</div>을 사용하여 div를 숨 깁니다.

또한 내가 작은 예외를 만든

initController(){ 
    checkSliderForDisplay(); 
} 

angular.module("app",[]) 
 
.controller("ctrl",function($scope){ 
 
var vm = this; 
 
    
 
vm.testType = "Stress_management"; 
 
function initController(){ 
 
    checkSliderForDisplay(); 
 
} 
 

 
function checkSliderForDisplay() { 
 
    if(vm.testType === "Stress_management"){ 
 
     vm.showSliderChecker = true; 
 

 
     console.log("The value of slider checker is true and here's proof ----> "); 
 
     console.log(vm.showSliderChecker); 
 
     } 
 
     else{ 
 
     vm.showSliderChecker = false; 
 
     console.log("Alas, the slider checker is just a lot of false advertising and nothing more."); 
 
     console.log(vm.showSliderChecker); 
 
     } 
 
} 
 

 
initController(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl as vm"> 
 
<div ng-show="vm.showSliderChecker">Some stuff that I wanna show</div> 
 

 
<div ng-show="!vm.showSliderChecker">Some stuff that I wanna hide</div> 
 
</div>
function initController(){ 
    checkSliderForDisplay(); 
} 

참고로 변경. 상태 매개 변수 대신에 변수를 사용하십시오. ui 라우터 기능을 사용할 수 없으므로

+0

"대신하여 참조의 "showSliderChecker = 거짓. –

+0

이유는이 답변 카펫에서 뭔가를 청소하려고 –

+0

을 ?? 없습니다. –

0

컨트롤러를 사용중인 경우 synstax vm은 ​​범위에서 컨트롤러를 참조 할 수있는 이름입니다.

코드가 컨트롤러 생성자와 같이 다른 클로저에서 실행되는 경우이를 다르게 참조해야 할 수 있습니다.

코드 조각이 Controller 생성자에서 호출되어 "vm"이 정의 된 변수가 아닌 것처럼 보입니다. 당신은 "이"대신 사용해야합니다 : 당신이 당신의 js 파일의 상단에 "use strict";을 추가하는 경우

function checkSliderForDisplay() { 
    if(this.testType === "Stress_management"){ 
    this.showSliderChecker = true; 

    console.log("The value of slider checker is true and here's proof ----> "); 
    console.log(this.showSliderChecker); 
    } 
    else{ 
    this.showSliderChecker = false; 
    console.log("Alas, the slider checker is just a lot of false advertising and nothing more."); 
    console.log(this.showSliderChecker); 
    } 
} 

당신은 몇 가지 경고를해야한다.

+0

안녕하세요. 이미 "엄격한 사용"을 사용하고 컨트롤러 생성자에서 호출하지 않습니다. 사실, John Papa Style Guidelines를 마지막 세부 사항으로 사용하고 있으며 모듈이 많은 예쁜 biiig 프로젝트입니다 그래서 나는 내가 당신에게 모든 것을 보여줄 수있을 것이라고 생각하지 않는다. 단순히 너무 많이 넣어 라. –

+0

Can Batarang과 같은 pluging을 사용하고 ng-if 요소의 범위에 무엇이 있는지 알려주시겠습니까? – Juan