使用请求状态AngularJs更改复选框值

时间:2016-05-30 14:42:35

标签: javascript angularjs checkbox ionic-framework

我有这种情况,在我的应用程序(使用Ionic + AngularJs开发)中有一个复选框元素,当你点击它时,会发出HTTP请求,我想要的是,根据该请求的结果,更改复选框的检查状态。

现在,正在发生的事情是,无论请求状态如何,复选框都会更改其检查状态。

我的index.html有这个

 <ion-side-menu-content>
      <ion-nav-bar class="bar-dark">

        <ion-nav-buttons side="left">
          <button class="button button-icon button-clear ion-navicon" menu-toggle="left">
          </button>
        </ion-nav-buttons>
      </ion-nav-bar>

      <ion-nav-view name="menuContent"></ion-nav-view>
    </ion-side-menu-content> 

    <ion-side-menu side="left">
      <ion-header-bar class="bar-dark menu-bar">
        <h1 class="title"> Categorías </h1>
      </ion-header-bar>
      <ion-content>
        <ul class="list">
          <a href="#/home" class="item" menu-close>Inicio</a>
          <a href="#/planesEstudio" class="item" menu-close>Planes de Estudio</a>
          <a href="#/calendarioAcademico" class="item" menu-close>Calendario académico</a>
          <a href="#/page/Finales" class="item" menu-close>Finales</a>
          <a href="#/news" class="item" menu-close> Noticias </a>
          <a href="" ng-controller="qrController" on-touch="scanBarcode()" class="item" menu-close> Aulas </a>
     <ion-checkbox class="item item-checkbox-right checkbox-circle" ng-model="notificationEnable" ng-checked="notificationEnable" ng-change="pushNotificationChange()">
              Activar notificaciones
          </ion-checkbox>
        </ul>
      </ion-content>
    </ion-side-menu>

  </ion-side-menus>

和我的app.js(管理这个):

  $scope.pushNotificationChange = function(){

      if(localStorage.getItem("notificationEnable")=="true"){
        $cordovaToast.show("Desactivando notificaciones...",'short','bottom');
        unregistration();
      }
      else{
        $cordovaToast.show("Activando notificaciones...",'short','bottom');
        intentandoRegistrarse=true;
        $scope.register();
      }
  }
  $scope.register = function () {
      var config = null;
      config = { "senderID": "674717386103" };

      request = $http({         //hacemos este request para testear la conectividad al backend
                method: "GET",
                url: API+"/qrCode/1",
              });
    request.success(function (){$cordovaPush.register(config).then(function (result) {
                                          $scope.registerDisabled=true;
                                          if (intentandoRegistrarse==true){
                                                    $cordovaToast.show("Notificaciones activadas",'long','bottom');
                                                    intentandoRegistrarse=false;
                                            };
                                }, 
                                function (err) {
                                        console.log("Register error " + err);
                                });
    });

    request.error(function(){
                    if (intentandoRegistrarse==true){
                            $cordovaToast.show("No se pudo activar las notificaciones, asegurate de tener internet e intentá de nuevo!",'long','center');
                            intentandoRegistrarse=false;
              $scope.notificationEnable=false;
              localStorage.setItem("notificationEnable",$scope.notificationEnable);
                    }
                });

  }

我想我必须使用$ scope。$ apply()但是怎么知道。

0 个答案:

没有答案