Cordova:如何导航到REST响应成功的页面

时间:2015-05-23 06:17:13

标签: javascript angularjs cordova ionic-framework

我正在使用cordova开发带离子框架的移动应用程序。我使用$ http.post方法发送请求&以json格式接收响应。在成功的活动中,我想导航到下一页。我的代码是这样的:

.controller('Intro', function($scope, $http, $ionicSlideBoxDelegate, $state, $timeout, $ionicLoading, $ionicPopup) {
$scope.login = function(user) {
    var userName = user.username;
    var passWord = user.password;
    $ionicLoading.show({
      template: 'Logging in...'
    });

$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

$http.post(base_url + "get/memberLogin.php?username=" + userName + "&password=" + passWord + "&tempKey=XHJJUQWERgfrbbbbokaw1222344", {}).success(function(data, status, headers, config) {
      if (data.alert === 'SUCCESS') {
          $timeout(function() {
              $ionicLoading.show({
                  template: 'Success'
              });
          }, 1600);
          var UserData = data.userdata;
          var Username = UserData.personal_information.first_name + " " + UserData.personal_information.last_name;
          var Email = UserData.username;
          var LastLogin = new Date(UserData.last_visited * 1000);
          $scope.users = [{
              username: Username,
              email: Email,
              location: true,
              id: null,
              avatar: 'img/men.jpg',
              enabled: 'true',
              lastLogin: LastLogin
          }];

          $timeout(function() { // it navigates you to next slide to be shown
              $ionicLoading.hide();
              $state.href('templates/dashboard.html'); // getting problem here.
          }, 2000);

      }
  });

问题是我尝试$state.href('templates/dashboard.html');,但它没有导航到。甚至我试过$state.go('templates/dashboard.html');& $state.go('^.dashboard');与绝对的一样,但它仍然没有用。哪个是工作的?

我在控制台上也没有出现任何错误......问题出在哪里?

更新了路线配置

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
.state('router', {
  url: "/route",
  abstract: true,
  templateUrl: "templates/side-menu-left.html"
})
.state('router.dashboard', {
  url: "/dashboard",
  abstract: true,
  views: {
    'menuContent' :{
      templateUrl: "templates/dashboard.html"
    }
  }
})
.state('router.dashboard.home', {
  url: "/home",
  views: {
    'home-tab' :{
      templateUrl: "templates/home.html"
    }
  }
})
 ....so on.....

1 个答案:

答案 0 :(得分:0)

导航由路线驱动。

例如,在您的情况下,您可以配置如下路线:

    orderStatusApp.config(function($stateProvider, $urlRouterProvider) {
        $stateProvider
                .state('Dashboard', {
                    url: "/Dashboard",
                    templateUrl: "templates/dashboard.html"
                });
    });

然后你可以使用$ state或$ location。例如,在这种情况下,您可以使用$ location这样的位置:

    $location.path('Dashboard');

或者您也可以尝试

$state.transitionTo('Dashboard');

有关角度路线的详细信息,请检查this,如果有替代且更受欢迎的路由插件,请检查this