0

私はいくつかのhtml要素を持っていますが、それらは次を使用して隠されています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>

コントローラーには非同期関数があり、解決したらそれらのリンクを表示したいと思います

$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して要素を取得し、コントローラーでクラスを変更することができましたが、解決を監視し、要素に表示を知らせる方法があるかどうかを考えていました

何か案は?

4

2 に答える 2

3

あなたのコードは私にはかなり理解できないようです。たとえば、イベント オブザーバーから true を返しても何もしません。また、同じ要素でclass="ng-hide"使用する場合は手動で設定しないでください。ng-show

とにかく、私がそれを正しく理解していれば、ブール型のプロパティを作成し、非同期アクションが完了した後に設定するだけです:

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

&

<item ng-show="isLoadingFinished">...</item>
于 2014-11-21T08:14:35.133 に答える
1

関数 try をスコープ変数で使用する代わりに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>
于 2014-11-21T08:14:53.713 に答える