Angularjs ui路由器:如何在应用程序启动时激活默认视图?

Angularjs ui路由器:如何在应用程序启动时激活默认视图?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,目前我的应用程序中有2个状态。每个应用程序都有多个视图。我想在应用程序启动时激活on状态。现在,当应用程序启动时,我只获得链接。然后我必须点击任何链接来激活任何状态。如何使状态默认打开 状态配置 var app = angular.module('dategenie', ['ui.router', 'ui.bootstrap', 'geolocation', 'ngIdle', 'infinite-scroll']); app.config(['$stateProvider', '$urlRou

目前我的应用程序中有2个状态。每个应用程序都有多个视图。我想在应用程序启动时激活on状态。现在,当应用程序启动时,我只获得链接。然后我必须点击任何链接来激活任何状态。如何使状态默认打开

状态配置

var app = angular.module('dategenie', ['ui.router', 'ui.bootstrap', 'geolocation', 'ngIdle', 'infinite-scroll']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
  // For any unmatched url, redirect to /profile
  $urlRouterProvider.otherwise('/');
  // Now set up the states
  $stateProvider.state('profile', {
    views: {
      mainModule: {
        url : '/profile'
        , templateUrl : 'partials/profile.html'
        , controller: 'ProfileCtrl'
      }
      , rightPaneModule: {
        templateUrl: 'partials/location.html'
        , controller: 'LocationCtrl'
      }
    }
  })
  .state('profiles', {
    views: {
      mainModule: {
        url : '/'
        , templateUrl : 'partials/home.html'
        , controller : 'HomeCtrl'
      }
      , chatModule: {
        templateUrl : 'partials/chat.html'
        , controller: 'ChatCtrl'
      }
    }
  });
}]);
HTML

a(ui-sref="profile") Profile
a(ui-sref="profiles") Home
a(href="/logout") Logout
div(ui-view="mainModule")
div(ui-view="chatModule")
div(ui-view="rightPaneModule")

谢谢

首先,url声明应该在views对象之外

这就是您的配置文件状态的样子:

.state('profiles', {
  url : '/',
  views: {
    mainModule: {
      templateUrl : 'partials/home.html'
      , controller : 'HomeCtrl'
    }, 
    chatModule: {
      templateUrl : 'partials/chat.html'
      , controller: 'ChatCtrl'
    }
  }
});
注意:我不确定这是否仍然是一个值得关注的问题,但我会将我所有的视图名称都用引号引起来。如果内存对我有用的话,这在之前的UI路由器中有一些影响-不确定这是否仍然适用

其次,如果希望路由在“/”上拾取活动状态,则需要确保启用了HTML5 Pushstate。否则,您的“根”将是“/#/”

这里有一些代码可以插入,比如push-state.js文件

app.config(['$locationProvider', function($locationProvider) {
  return $locationProvider.html5Mode(true);
}]);
在它自己的文件中保存非常有用,当您偶然发现客户端路由错误时,我发现我的大多数问题都是由PushState索引重复引起的(因此,在调试时,打开和关闭它是一个很好的小优势)


希望你能成功,祝你好运:)

首先,你的url声明应该在views对象之外

这就是您的配置文件状态的样子:

.state('profiles', {
  url : '/',
  views: {
    mainModule: {
      templateUrl : 'partials/home.html'
      , controller : 'HomeCtrl'
    }, 
    chatModule: {
      templateUrl : 'partials/chat.html'
      , controller: 'ChatCtrl'
    }
  }
});
注意:我不确定这是否仍然是一个值得关注的问题,但我会将我所有的视图名称都用引号引起来。如果内存对我有用的话,这在之前的UI路由器中有一些影响-不确定这是否仍然适用

其次,如果希望路由在“/”上拾取活动状态,则需要确保启用了HTML5 Pushstate。否则,您的“根”将是“/#/”

这里有一些代码可以插入,比如push-state.js文件

app.config(['$locationProvider', function($locationProvider) {
  return $locationProvider.html5Mode(true);
}]);
在它自己的文件中保存非常有用,当您偶然发现客户端路由错误时,我发现我的大多数问题都是由PushState索引重复引起的(因此,在调试时,打开和关闭它是一个很好的小优势)

希望你能成功,祝你好运:)