2014-11-21 6 views
-1

난 일부 HTML 요소를 가지고 있고, 그들은 내가 비동기 기능을 가지고 있고 그것을 해결 때 나는 아이디어가 해당 링크컨트롤러 비동기 함수가 해결 될 때 요소 속성을 표시, 숨기기 또는 변경하는 방법은 무엇입니까?

$scope.isLoggedin = function(){ 
    $scope.$on('some_function', function() { 
     //this will resolve at some point 
     return true; 
    }); 
}; 

을 보여 드리고자 컨트롤러에 ng-hide

<ion-list> 
     <ion-item class="ng-hide" ng-show="isLoggedin()" ng-click="login()">Login</ion-item> 
     <ion-item class="ng-hide" ng-show="isLoggedin()" href="#/app/register">Register</ion-item> 
</ion-list> 

를 사용하여 숨겨진 isLoggedin()이 true를 반환하면 ng-show도 true로 설정됩니다. 이 사용으로

메신저만큼, 다른 해결책이 될 수 ng-show="isLoggedin()"를 사용하여 설정할 수 없습니다 :

$scope.$on('some_function', function() { 
    //this will resolve at some point 
}); 

내가 할 수 설정 일부 id's 및 요소를 잡고 컨트롤러의 클래스를 변경,하지만 난 생각했다 결의에 대한보고 요소가

어떤 아이디어를 보여 알릴 수있는 방법이 있다면?

답변

3

코드가 이해하기 어려워 보입니다. 예를 들어, 이벤트 관찰자에서 true를 반환하면 AFAIK에 전혀 아무것도 수행하지 않습니다. 또한 동일한 요소에 ng-show을 사용하는 경우 수동으로 class="ng-hide"을 설정하지 마십시오. 내가 제대로 이해한다면

어쨌든, 당신은 당신의 비동기 작업 후를 부울 속성을 생성하고 설정해야하는 것은 완료 :

$scope.$on('someEvent', function() { 
    $scope.isLoadingFinished = true; 
}); 

&

<item ng-show="isLoadingFinished">...</item> 
1

대신의 기능 isLoggedIn()를 사용하여 이

$scope.isLogged = false; 
... 
$scope.$on(....) 
    $scope.isLogged = true; 
.... 
같은 범위 변수로 시도, 뭔가3210

<ion-list> 
    <ion-item ng-if="isLogged" ng-click="login()">Login</ion-item> 
    <ion-item ng-if="!isLogged" href="#/app/register">Register</ion-item> 
</ion-list> 
로 HTML을 변경