angularjs-ui路由-如何附加同名的多个URL?

angularjs-ui路由-如何附加同名的多个URL?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,在我的应用程序中,我需要附加多个具有相同状态的url-我如何实现这一点 以下是我的现状: .state('createCase', { url: '/createCase', templateUrl: null, controller: null, data: { requireLogin: false }, 另外,我想附上另一个url,如下所示: .state('createCase', {

在我的应用程序中,我需要附加多个具有相同
状态的
url
-我如何实现这一点

以下是我的现状:

.state('createCase', {
        url: '/createCase',
        templateUrl: null,
        controller: null,
        data: {
          requireLogin: false
        },
另外,我想附上另一个
url
,如下所示:

.state('createCase', {
        url: '/createCase?sn=12345', //(12345 is dynamic )
        templateUrl: null,
        controller: null,
        data: {
          requireLogin: false
        },
以下是我目前的职能:

function routeConfig($stateProvider, $locationProvider, $urlRouterProvider) {

    $stateProvider
      .state('login', {
        url: '/',
        templateUrl: function(){ 
          console.log('from 1oauth'); 
          return 'app/login/login.html';
        },
        controller: 'loginCtrl as ctrl',
        data: {
          requireLogin: false
        }
      })
      .state('oauth', {
        url: '/oauth',
        templateUrl: function(){

          console.log('from 2oauth');
          return 'app/oauth/oauth.template.html';

        },
        controller: 'OAuthController as ctrl',
        data: {
          requireLogin: false
        }
      })
      .state('createCase', {
        url: '/createCase',
        templateUrl: null,
        controller: null,
        data: {
          requireLogin: false
        }

        }
      })


    // if (isWeb()){  
      $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
      });
    // }

    // $urlRouterProvider.otherwise('/');
    $urlRouterProvider.otherwise('/');

  }

您不需要为同一url定义两种不同的状态。在控制器中,可以使用具有查询参数作为属性的
$state.params
对象

你的路线

.state('createCase', {
        url: '/createCase',
        templateUrl: null,
        controller: 'MyCtrl',
        data: {
          requireLogin: false
        },
        params: {
          sn: null
        }
你的控制器

function MyCtrl($state) {
    console.log($state.params);
}

您不需要为同一url定义两种不同的状态。在控制器中,可以使用具有查询参数作为属性的
$state.params
对象

你的路线

.state('createCase', {
        url: '/createCase',
        templateUrl: null,
        controller: 'MyCtrl',
        data: {
          requireLogin: false
        },
        params: {
          sn: null
        }
你的控制器

function MyCtrl($state) {
    console.log($state.params);
}

在您的路线中定义:

.state('createCase', {
        url: '/createCase?sn',   // bind your query param to URL
        templateUrl: null,
        controller: null,
        data: {
          requireLogin: false
        },
在您的控制器中, 将
$stateParams
注入依赖项,并将其与
$stateParams.sn
一起使用

例如:

$state.go('createCase', {sn:1234});  // move to state with a param

$stateParams.sn   // get a value of ==> 1234

在您的路线中定义:

.state('createCase', {
        url: '/createCase?sn',   // bind your query param to URL
        templateUrl: null,
        controller: null,
        data: {
          requireLogin: false
        },
在您的控制器中, 将
$stateParams
注入依赖项,并将其与
$stateParams.sn
一起使用

例如:

$state.go('createCase', {sn:1234});  // move to state with a param

$stateParams.sn   // get a value of ==> 1234

看起来您想要创建父状态和子状态。如果您只想访问
$routeParams
,您可以将它们传递给控制器,或者在使用相同状态时将它们忽略

(函数(){
"严格使用",;
角度.module('app',['ui.router']))
.config(routeConfig);
routeConfig.$inject=['$stateProvider'];
函数routeConfig($stateProvider){
$stateProvider
.state('createCase'{
url:“/createCase”,
模板:“创建案例”
})
.state('createCase.detail'{
父项:“createCase”,
url:“/:sn”,
视图:{'detail@createCase': {
模板:“{sn}}”,
控制器:函数($scope,$stateparms){
$scope.sn=$stateParams.sn;
}
}
}
})
}
}());

安格拉斯
文件。写(“”);
  • createCase
  • CreateCaseDetail123456
  • createCaseDetail无

看起来您想要创建父状态和子状态。如果您只想访问
$routeParams
,您可以将它们传递给控制器,或者在使用相同状态时将它们忽略

(函数(){
"严格使用",;
角度.module('app',['ui.router']))
.config(routeConfig);
routeConfig.$inject=['$stateProvider'];
函数routeConfig($stateProvider){
$stateProvider
.state('createCase'{
url:“/createCase”,
模板:“创建案例”
})
.state('createCase.detail'{
父项:“createCase”,
url:“/:sn”,
视图:{'detail@createCase': {
模板:“{sn}}”,
控制器:函数($scope,$stateparms){
$scope.sn=$stateParams.sn;
}
}
}
})
}
}());

安格拉斯
文件。写(“”);
  • createCase
  • CreateCaseDetail123456
  • createCaseDetail无

目前我的URL是:
http://localhost:3000/createCase?sn=12345
但当我像你一样使用控制台时,我得到的是空对象-@user2024080抱歉,我是ui路由器新手:-)我刚刚更新了路由。注意,我定义了我们在路由中接受的参数,并为sn参数添加了一个默认值。目前我的URL是:
http://localhost:3000/createCase?sn=12345
但当我像你一样使用控制台时,我得到的是空对象-@user2024080抱歉,我是ui路由器新手:-)我刚刚更新了路由。注意,我定义了我们在路由中接受的参数,并为sn参数添加了一个默认值。