1

我有一个 AngularJS 应用程序,我正在使用 Phonegap 为 iOS 应用程序开发。

该应用程序使用 Angular-Mobile (ngMobile) 和 angular-mobile-nav:https ://github.com/ajoslin/angular-mobile-nav

当应用程序加载时,会出现一个主屏幕,其中包含数据库中的项目列表供用户查看。这些是从 WebSQL 加载的,但在初始加载时应该从 API 下载。

我正在使用 AngularJS 的 $http 库进行下载:

$http.get(
        $scope.api_url + '/users/events/?values=' + hash,           
        {
            headers: {apihash: hashes.apihash}
        }
    ).success(function(data,status,headers,config){
        // do stuff with response
    }).error(function(data,status,headers,config){
        // log the error
    }); 

我遇到的问题是,直到我点击一个链接并导航到一个新页面——这个 API 请求才完成——这是由 angular-mobile-nav 处理的。

我可以在主屏幕上坐一分钟,但是当我移动到新视图时,我可以在控制台中看到 AJAX 调用完成。同样的事情发生在这个屏幕上,如果我触发一个 AJAX 调用,我可以等待多久,只要我切换回我的主屏幕,我就可以在控制台中看到对 API 的 AJAX 调用完成。

这是我为导航而设置的代码:

ng-tap="slidePage('/catalogue')"

我的路线提供者如下所示:

$routeProvider.
        when('/', {
            templateUrl: 'partials/home.html',   
            controller: 'HomeCtrl'
        }).
        when('/catalogue', {
            templateUrl: 'partials/catalogue.html', 
            controller: 'CatalogueCtrl',
        }).
        otherwise({redirectTo: '/'});

路由和移动导航都工作正常,我可以毫无问题地在视图之间切换,但是后台的 AJAX 被 UI 阻塞或延迟,直到我移动到下一个视图

4

1 回答 1

1

也许您必须将更改应用于范围。

你试过这个吗?

    $scope.$apply(function()
    {
       // do stuff with response
    });
于 2013-11-10T04:24:04.397 回答