2014-11-21 7 views
-1

У меня есть некоторые HTML элементы, и они скрыты с помощью ng-hideКак показать, скрыть или изменить атрибут элемента при репликации функции async контроллера?

<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> 

в контроллере я есть функция асинхронной и когда она решает я хотел бы показать эти ссылки

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

идея является когда isLoggedin() возвращает true, то значение ng-show будет равно true.

им не установлен на использовании ng-show="isLoggedin()", может быть другое решение, до тех пор, как он использует:

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

я мог настроить некоторые id's и захватить элементы и изменить класс в контроллере, но я думал, если есть способ следить за разрешением и позволить элементу знать, чтобы показать

любые идеи?

ответ

3

Ваш код выглядит довольно непостижимым для меня. Например, возвращение true от наблюдателя событий вообще ничего не делает, AFAIK. Кроме того, вручную не устанавливайте class="ng-hide" при использовании ng-show на том же элементе.

Во всяком случае, если я правильно понимаю, вам просто нужно создать логическое свойство и установить его после асинхронного действия завершает:

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

&

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

Вместо того, чтобы использовать функцию isLoggedIn() попробуйте с переменной областью, что-то вроде этого

$scope.isLogged = false; 
... 
$scope.$on(....) 
    $scope.isLogged = true; 
.... 

и измените ваш html на

<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> 

 Смежные вопросы

  • Нет связанных вопросов^_^