$ state.go调用加载控制器但不调用模板

时间:2016-08-16 16:46:19

标签: angularjs ionic-framework

我有一个$ state.go调用,它在两个Factory HTTP Post调用之后运行,它会重定向到Dashboard样式的页面。但是,关联模板文件在任何时候都不会加载,实质上是加载白页。此时刷新会导致整页加载。

我不清楚原因是什么,因为路由器中的设置与我在其他页面中看到的预期一致。我已附上以下代码。

//pertinent router code
app.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

  .state('login', {
    url: "/login",
    templateUrl: "js/users/templates/login.html",
    controller: 'LoginController'
  })

  .state('dashboard', {
    url: '/dashboard',
    views: {
      'menuContent' :{
        abstract: true,
        templateUrl: 'js/users/templates/dashboard.html',
        controller: 'DashboardController'
      }
    }
  })

//Segment from LoginController fired by form submit
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
  if (resp !== undefined) {
    $scope.go("dashboard");
  } else {
    //Not a valid login
  }
});

2 个答案:

答案 0 :(得分:1)

据我所知,您的代码段存在两个问题

州定义

views: {
    'menuContent' :{
        abstract: true,
        templateUrl: 'js/users/templates/dashboard.html',
        controller: 'DashboardController'
    }
}

您正在视图中设置属性abstract: true,这是设置它的错误位置,它应该是状态定义的一部分。此外,如果将状态设置为抽象将引发异常,因为无法直接导航抽象状态。我的建议是从你所在的国家删除该财产,因为你显然不需要它。

您可以在ui-router docs

了解有关抽象行为的更多信息
  

抽象状态永远不会被直接激活,但可以提供   继承属于其共同的儿童状态。

州重定向

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
      if (resp !== undefined) {
        $scope.go("dashboard");
      } else {
        //Not a valid login
      }
    });

您引用$scope.go时应该是$state.go

答案 1 :(得分:0)

$state.go而非$scope.go 请在控制器中使用以下代码。

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
  if (resp !== undefined) {
    $state.go("dashboard");
  } else {
    //Not a valid login
  }
});