美元的状态.Go调用加载控制器而不是模板



我有一个$state。go调用,在两次工厂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
  }
});

据我所知,你的代码片段

有两个问题

状态定义

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

$state.go不是$scope.go请在您的控制器中使用以下代码。

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

最新更新