【问题标题】:How to determine ons-modal shown state?如何确定ons-modal显示状态?
【发布时间】:2015-07-09 15:54:44
【问题描述】:

当应用程序获取一些数据时,我正在使用 ons-modal 来显示加载文本和微调器图标。 代码如下:

<ons-modal var="loadingModal">
  <ons-icon icon="ion-load-c" spin="true"></ons-icon>
  <br><br>
  Cargando...
  <br>
</ons-modal>

我可以使用loadingModal.show();loadingModal.hide(); 正确显示隐藏它

但是在 Angular 中我怎么知道它是显示还是隐藏?

【问题讨论】:

    标签: onsen-ui


    【解决方案1】:

    更新

    显然我不那么优雅的解决方案毕竟不是那么优雅:D

    Here is a pull request that shows the method isShown() that should be available soon I guess

    在内部,该函数看起来类似于此答案中的内容

    isShown() {
      return this.style.display !== 'none';
    }
    

    不是一个超级优雅的解决方案,但它确实有效

    if( $scope.loadingModal._element.css('display') == 'none'){
      // hidden now
    }else{
      // visible now
    }
    

    <!doctype html>
    <html lang="en" ng-app="myApp">
      <head>
        <meta charset="utf-8">
        <title>Modal | Onsen UI</title>
        <link rel="stylesheet" href="https://rawgit.com/OnsenUI/OnsenUI/master/demo/styles/app.css"/>
        <link rel="stylesheet" href="https://rawgit.com/OnsenUI/OnsenUI/master/build/css/onsenui.css">
        <link rel="stylesheet" href="https://rawgit.com/OnsenUI/OnsenUI/master/build/css/onsen-css-components.css">
    
        <script src="https://rawgit.com/OnsenUI/OnsenUI/master/build/js/angular/angular.js"></script>
        <script src="https://rawgit.com/OnsenUI/OnsenUI/master/build/js/onsenui.js"></script>
        <script src="https://rawgit.com/OnsenUI/OnsenUI/master/demo/app.js"></script>
        <script>
          function check($el){
            return $el.css('display') === 'none' ? 'hidden' : 'visible';
          }
          angular.module('myApp').controller('PageController', function($scope) {
            $scope.open = function() {
              $scope.app.modal.show();
              alert(check($scope.app.modal._element));
              setTimeout(function() {
                $scope.app.modal.hide();
                alert(check($scope.app.modal._element));
              }, 2000);
            };
          });
        </script>
      </head>
    
      <body ng-controller="PageController">
    
        <ons-navigator>
    
          <ons-modal var="app.modal">
            <ons-icon icon="ion-load-c" spin="true"></ons-icon>
            <br><br>
            Cargando...
            <br>
          </ons-modal>
    
          <ons-toolbar>
            <div class="center">Modal</div>
          </ons-toolbar>
    
          <p style="text-align: center">
            <ons-button modifier="light" ng-click="open();">Open Modal</ons-button>
          </p>
    
        </ons-navigator>
    
      </body>
    </html>

    【讨论】:

    • 我认为它很脏,但它仍然可以正常工作:)。如果没有另一个更优雅的解决方案,那么我会接受这个。谢谢 Dhiraj!
    • @Padlite 如果您认为答案有效,请接受答案。
    • 顺便说一句,github.com/OnsenUI/OnsenUI/issues/768 很快就会添加到开发分支中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2011-10-18
    • 1970-01-01
    • 2022-07-12
    • 2011-02-17
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多