Angularjs 角度UI路由器中不同选项卡的相同html页面

Angularjs 角度UI路由器中不同选项卡的相同html页面,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我的angular应用程序路由如下: $stateProvider // setup an abstract state for the tabs directive .state('tab', { url: "/tab", abstract: true, templateUrl: "templates/tabs.html" }) // Each tab has its own nav history stack: .state('t

我的angular应用程序路由如下:

$stateProvider

  // setup an abstract state for the tabs directive
  .state('tab', {
      url: "/tab",
      abstract: true,
      templateUrl: "templates/tabs.html"
  })

  // Each tab has its own nav history stack:

  .state('tab.dotnet', {
      url: '/dotnet',
      views: {
          'tab-dotnet': {
              templateUrl: 'templates/tab-dotnet.html',
              controller: 'QuestionsCtrl'
          }
      }
  })

  .state('tab.sql', {
      url: '/sql',
      views: {
          'tab-sql': {
              templateUrl: 'templates/tab-sql.html',
              controller: 'QuestionsCtrl'
          }
      }
  })
以上两个路由使用相同的控制器但不同的html页面。 由于这两个页面是相同的,我希望在我的应用程序中有一个html页面,而不是两个不同的tab sql和tab dotnet页面。 但是我需要在选择选项卡时向控制器注入一个微分变量。 基本上我需要这样的东西:

  .state('tab.dotnet', {
      url: '/dotnet',
      views: {
          'tab-dotnet': {
              templateUrl: 'templates/tab.html',
              controller: 'QuestionsCtrl',
              type: 'dotnet' // so that i get this type in my Controller
          }
      }
  })

  .state('tab.sql', {
      url: '/sql',
      views: {
          'tab-sql': {
              templateUrl: 'templates/tab.html',
              controller: 'QuestionsCtrl',
              type: 'sql'
          }
      }
  })

如何实现这一点?

您可以使用resolve将数据传递给处于状态的控制器

  .state('tab.dotnet', {
      url: '/dotnet',
      views: {
          'tab-dotnet': {
              templateUrl: 'templates/tab.html',
              controller: 'QuestionsCtrl',
              resolve: {
                  type: 'dotnet';
              }
          }
      }
  })

  .state('tab.sql', {
      url: '/sql',
      views: {
          'tab-sql': {
              templateUrl: 'templates/tab.html',
              controller: 'QuestionsCtrl',
              resolve: {
                  type: 'sql';
              }
          }
      }
  })