2016-06-24 8 views
1

두 개 단추는 ng-if를 사용하여 표시할지 여부를 결정합니다. 잠시 동안 두 요소는 함께 표시하면 안되지만 표시됩니다. 고립 된 예제에서는, 이것이 잘 작동하지만, 프로젝트에서 약간의 대기 시간이 있습니다. 이 게시물과 매우 유사 : Angular conditional display using ng-if/ng-show/ng-switch briefly shows both elements하지만 그 어떤 시도도 다른 답변이 없었어요.ng-if는 두 요소를 모두 표시합니다.

<button class="btn btn-primary drop_shadow" ng-if="vm.ingestReady == true" 
       ng-click="vm.ingestReady = !vm.ingestReady" ng-cloak> Start Ingest 
</button> 
<button class="btn btn-danger drop_shadow" ng-if="vm.ingestReady == false" 
       ng-click="vm.ingestReady = !vm.ingestReady" ng-cloak>Cancel Ingest 
</button> 

그리고 컨트롤러 코드는 페이지로드

vm.ingestReady = true; 

입니다. 따라서 버튼을 클릭하면보기가 전환되지만 뜨거운 초에는 둘 다 표시됩니다. 당신이 당신의 스타일이를 추가해야합니다, 그래서 CSS를 사용하여

+0

시도가 머리 부분에이 줄을 추가하고 여전히 문제가 있는지 자세한 답변

.ng-leave { display:none !important; } 

.

+0

@IndraUprade 아무 것도 바뀌지 않았고 둘 다 짧은 시간 동안 계속 볼 수 있습니다. –

답변

0

ng-cloak 작품 :합니다 (btn-primary/btn-dangerng-class)

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 
    display: none !important; 
} 

보조 노트에

, ng-bind 더 나은 될 수있다 이 유형의 문제에 대한 해결책. 당신은 JS 변수에 버튼의 내용을 결합하는 정도와 같은 기능을 할 수 있습니다 버튼의 범위에, 다음

<button class="btn drop_shadow" 
     ng-class="getButtonClass()" 
     ng-bind="getButtonText()" 
     ng-click="vm.ingestReady = !vm.ingestReady"></button> 

그리고, 당신은 단지 두 개의 참조 JS 함수를 추가해야 할 것 (청소기이 논리 인라인 퍼팅 이상) :

$scope.getButtonClass = function() { 
    return vm.ingestReady ? 'btn-primary' : 'btn-danger'; 
}; 

$scope.getButtonText = function() { 
    return vm.ingestReady ? 'Start Ingest' : 'Cancel Ingest'; 
}; 
+0

그리고이 속성을 물론 – AranS

+0

의 요소에 추가하십시오. @AranS는 그가 이미 거기에있는 것처럼 보이지만 예 ... 또한이 질문에 비틀 거린 사람들에게 중요합니다. – Sam

+0

@Sam ng-cloak 클래스는 저에게 효과적이지 않았습니다. 이미 두 번째 부분을 해결해 보았습니다. 그러나 두 요소가 잠시 동안 계속 보이는 이유의 맨 아래로 가려고했습니다. –