Angularjs 范围不工作

Angularjs scope not working

我正在使用基本的 angular.js 概念来显示和隐藏 div。由于某些原因,我无法使其工作。 上传文件时,我根据 registerStart 值显示 div 'myFormSpinner'。我正在创建一个 phone gap 应用程序。

有人可以帮我找到问题所在吗?除了 showing/hiding div 一切正常。下面是代码片段:

 <div class="row" ng-controller="RegisterCtrl">  
 <div id="myFormSpinner"  ng-show="registerStart"> 
     <img src="img/ajax-loader.gif"> 
 </div> 
 <div class="col-md-8"> 
     <form class="ng-pristine ng-invalid ng-invalid-required" style="margin-top:5%;"> 
           <div class="col-md-6"> 
                  <input class="form-control " type="text" ng-model="registerData.Email" id="Email" name="Email" required placeholder="Email"> 
             </div> 
                <div class="col-md-offset-1 col-md-10 "> 
                   <input type="submit" ng-click="register()" value="Register" class="btn btn-default btn-primary"> 
                </div> 
     </form> 
 </div> 

event.controller('RegisterCtrl',    ['$scope', '$state', '$q', '$http', 'eventService', 'authService', '$stateParams', '$rootScope', 'tokenService', 'imageService', 'spinnerService', 'appBackgroundService', 
function ($scope, $state, $q, $http, eventService, authService, $stateParams, $rootScope, tokenService, imageService, spinnerService, appBackgroundService) { 
var userNumber = 0; 
$scope.mediaUploadStart = false; 
$scope.eventId = $state.params.id; 

 $scope.register = function () { 
     $scope.registerStart = true; 
     console.log('scope.Pic=' + $scope.pic); 
     if ($scope.registerData.Email) { 

         spinnerService.show('myFormSpinner'); 
         $scope.mediaUploadStart = true; 
         var paramOptions = { 
             eventId: $state.params.id, 
             email: $scope.registerData.Email, 
             fb: {}, 
             number: userNumber, 
             provider: "Form" 
         }; 
         uploadPicAndData(paramOptions).then(function (result) { 
             var data = JSON.parse(result); 
             $scope.registerStart = false; 
             appBackgroundService.disableBackgroundMode(); 
         }, 
             function (error) { 
                 spinnerService.hide('myFormSpinner'); 
                 $scope.registerStart = false; 
                 appBackgroundService.disableBackgroundMode(); 
             }); 
         $scope.mediaUploadStart = false; 
         spinnerService.hide('myFormSpinner'); 
     } 
          }; 
 }])

您正在以异步模式设置 $scope 元素。 摘要循环无法确定是否已在异步模式下对范围元素进行了更改。

您应该使用 $apply 激活摘要循环。

$scope.$apply(function () { $scope.registerStart = false; });

在此处阅读有关 $apply 的更多信息:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html