离子侧边菜单中的异步工厂

async factory in ionic sidemenu

我正在为我的移动应用程序使用离子框架 我需要的是当我点击侧面菜单时 links 我希望工厂服务从服务器

获取数据

现在发生的事情是应用程序 运行 时只向服务器发送了一个 http 请求,但是当我单击侧边菜单中的任何 link 时,没有发送任何请求

myapp.factory('Authy',function ($cookieStore,Auth,$http,$q) {

    return {
     can_go :function(){
               var deffered = $q.defer();
          $http.get(mainUrl+"/user_info.json")
                .success(function(data){
              deffered.resolve(data);
          }).error(function(){
             deffered.reject(); 
          });
             return deffered.promise;      
     }
    }


    });

在我的控制器中

      myapp.controller("PowerCtrl",function($scope,Authy ,$cookieStore,$http ){
                  $scope.view_loading = true;
                   Authy.can_go().then(function(data){
     $scope.view_loading = false;
    if (data.user){
        var user = data.user;

        if ((user.country !="") && (user.city != "")) {
           $scope.coins = user.coins
              $scope.id =user.id
        $scope.current_vip =user.current_vip;
         $scope.vip_time =user.vip_time;


        }else{

         window.location.href="#/step2";     
        }
    }else{

     window.location.href="#/login";   
    }


 });

              });

我的路由器

myapp.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

  .state("main",{
      url: "/",
      templateUrl: "templates/main.html",
      controller: "MainCtrl"
  })

  .state("login",{
      url: "/login",

      templateUrl: "templates/login.html",
      controller: "LoginCtrl"

  })
   .state("register",{
      url: "/register",

      templateUrl: "templates/register.html",
      controller: "RegisterCtrl"      
  })
 .state("step2",{
      url: "/step2",
      templateUrl: "templates/step2.html",
      controller: "StepCtrl"
  })


  .state('app', {
    url: "/app",
    abstract: true,
    templateUrl: "templates/menu.html",
    controller: 'AppCtrl'
  })

  .state('app.home', {
    url: "/home",
    views: {
      'menuContent': {
          controller: "HomeCtrl",

        templateUrl: "templates/home.html"
      }
    }
  })

  .state('app.power', {
    url: "/power",
    views: {
      'menuContent': {
          controller : "PowerCtrl",
        templateUrl: "templates/power.html"
      }
    }
  });

  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/');
});

您必须在视图上禁用 caching,它默认启用,例如:

<ion-view cache-view="false" view-title="My Title!">
  ...
</ion-view>

阅读更多关于 caching here