Javascript 爱奥尼亚、科尔多瓦、Phonegap加载消息

Javascript 爱奥尼亚、科尔多瓦、Phonegap加载消息,javascript,jquery,angularjs,cordova,Javascript,Jquery,Angularjs,Cordova,我正在使用angular.js的ionic框架开发一个应用程序,我发现我的加载消息在我的内容加载之前就消失了——下面是一些示例代码 $scope.validateUser = function () { var email = this.user.email; var password = this.user.password; if(!email || !password) { $rootScope.notify("Please enter valid

我正在使用angular.js的ionic框架开发一个应用程序,我发现我的加载消息在我的内容加载之前就消失了——下面是一些示例代码

$scope.validateUser = function () {
    var email = this.user.email;
    var password = this.user.password;
    if(!email || !password) {
        $rootScope.notify("Please enter valid credentials");
        return false;
    }
    $rootScope.show('Please wait.. Authenticating');
    API.signin({
        email: email,
        password: password
    }).success(function (data) {
        $rootScope.setToken(email); // create a session kind of thing on the client side
        $rootScope.hide();
        $window.location.href = ('#/database/list');
    }).error(function (error) {
        $rootScope.hide();
        $rootScope.notify("Invalid Username or password");
    });
}
“#数据库/列表”是从RESTful API抓取的,在应用程序中呈现页面之前,验证消息消失

我是否正确地认为应该将$rootScope.hide()移动到$window.location.href行的下方,或者它是更险恶的东西(例如,我收到了$rootScope.hide()贬值的警告,我应该使用$ionicLoading.hide()


我对Angular和应用程序开发(主要是PHP开发)非常陌生,因此非常感谢您的帮助。

尽量不要将对象附加到$rootScope,而是使用服务来存储全局可访问的数据。此外,您还需要了解Angular如何使用来解析远程数据调用

基本思想是调用控制器中的函数,该函数反过来调用登录服务来验证用户。4一旦调用,就会发生一些事情

  • 显示加载屏幕
  • LoginService.login进行远程调用(通过承诺)以验证用户身份
  • 控制器等待LoginService.login承诺得到解决
  • 一旦承诺解析,用户对象将使用接收到的令牌进行更新,加载屏幕将隐藏
  • 演示使用超时代替$http调用来解决延迟问题

    视图:

    登录服务:

    .service('LoginService', function($q, $timeout) {
      return {
        login: function() {
          var defer = $q.defer();
    
          $timeout(function() {
             defer.resolve({token: new Date().getTime()});
          }, 3000);
    
    
          // replace timeout function with actual $http call
          // the $http call will return a promise equivelant to
          // defer.promise;
          //$http({
          //  url: '//myloginurl',
          //  params: {usr: 'myusr', pwd: 'mypwd'}
          //}).success(function(data) {
          //  // presume data contains json {token: some token}
          //  defer.resolve(data);
          //}).error(function(){
          //  defer.resolve();
          //});
    
          return defer.promise;
        }
      }  
    });
    

    尽量不要将对象附加到$rootScope,而是使用服务来存储全局可访问的数据。此外,您还需要了解angular如何使用来解析远程数据调用

    基本思想是调用控制器中的函数,该函数反过来调用登录服务来验证用户。4一旦调用,就会发生一些事情

  • 显示加载屏幕
  • LoginService.login进行远程调用(通过承诺)以验证用户身份
  • 控制器等待LoginService.login承诺得到解决
  • 一旦承诺解析,用户对象将使用接收到的令牌进行更新,加载屏幕将隐藏
  • 演示使用超时代替$http调用来解决延迟问题

    视图:

    登录服务:

    .service('LoginService', function($q, $timeout) {
      return {
        login: function() {
          var defer = $q.defer();
    
          $timeout(function() {
             defer.resolve({token: new Date().getTime()});
          }, 3000);
    
    
          // replace timeout function with actual $http call
          // the $http call will return a promise equivelant to
          // defer.promise;
          //$http({
          //  url: '//myloginurl',
          //  params: {usr: 'myusr', pwd: 'mypwd'}
          //}).success(function(data) {
          //  // presume data contains json {token: some token}
          //  defer.resolve(data);
          //}).error(function(){
          //  defer.resolve();
          //});
    
          return defer.promise;
        }
      }  
    });
    
    .service('LoginService', function($q, $timeout) {
      return {
        login: function() {
          var defer = $q.defer();
    
          $timeout(function() {
             defer.resolve({token: new Date().getTime()});
          }, 3000);
    
    
          // replace timeout function with actual $http call
          // the $http call will return a promise equivelant to
          // defer.promise;
          //$http({
          //  url: '//myloginurl',
          //  params: {usr: 'myusr', pwd: 'mypwd'}
          //}).success(function(data) {
          //  // presume data contains json {token: some token}
          //  defer.resolve(data);
          //}).error(function(){
          //  defer.resolve();
          //});
    
          return defer.promise;
        }
      }  
    });