离子侧菜单中的异步工厂

时间:2015-03-01 16:05:54

标签: javascript angularjs angular-ui-router ionic-framework

我正在为我的移动应用程序使用离子框架 我需要的是当我单击侧面菜单链接时,我希望工厂服务从服务器带来数据

现在发生的事情是,当应用程序运行时,只有一个http请求被发送到服务器,但当我点击侧面菜单中的任何链接时没有发送请求

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('/');
});

1 个答案:

答案 0 :(得分:1)

您必须在视图上禁用caching,默认情况下已启用,例如:

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

详细了解caching here