Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 是否可能使用param';s值是角ui路由器中的数组吗?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 是否可能使用param';s值是角ui路由器中的数组吗?

Angularjs 是否可能使用param';s值是角ui路由器中的数组吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我想知道一个状态(角度ui路由器)中的参数值如何成为一个数组 1)状态 .state('products-by-category', { url: "/rent-designer-category/{price_range:int}", params: { price_range: { array: true } } }) 2)控制器 var urlParams = ['bt',1,150]; $state.transitionTo('products-by-

我想知道一个状态(角度ui路由器)中的参数值如何成为一个数组

1)状态

.state('products-by-category', {
   url: "/rent-designer-category/{price_range:int}",
   params: {
       price_range: { array: true }
   }
})
2)控制器

var urlParams = ['bt',1,150]; 
$state.transitionTo('products-by-category', urlParams, {
    location: true,
    inherit: true,
    relative: $state.$current,
    notify: false
});
http://localhost:3000/rent-designer-bags/?price_range=bt&price_range=1&price_range=150
3)浏览器上的URL

var urlParams = ['bt',1,150]; 
$state.transitionTo('products-by-category', urlParams, {
    location: true,
    inherit: true,
    relative: $state.$current,
    notify: false
});
http://localhost:3000/rent-designer-bags/?price_range=bt&price_range=1&price_range=150
我想要的URL是:

http://localhost:3000/rent-designer-bags/?price_range=['bt',1,150]

你知道我怎样才能做到这一点吗?这有可能吗?

正如你所想的那样简单:

.state('products-by-category', {
  params: {
    priceRange: null
  }
})
控制器中的代码:

var urlParams = ['bt', 1, 150]; 
$state.go('products-by-category', { priceRange: urlParams });
不要使用transitiono,因为您不需要这样做。$state.go()做得很好。您的第二个参数需要更改,因为您必须将所需参数的名称与已设置的数组一起传递为该参数的值。第三个参数是$state.go(),实际上并不需要它,因为选项大部分都是默认值

您还编写了直接呼叫的url。如果您已经在使用路由器四处移动(例如($state.go),那么您并不真正需要它。除非用户对angularjs/UIRouter了如指掌,否则不会有用户在这样的url中进行书写,即使这样,也不太可能

编辑:更新答案。如果要访问“另一端”的阵列,请在控制器中通过$stateParams访问该阵列:

export default class someClass() {
  constructor($stateParams) {
    super(arguments);

    this.priceRange = this.$stateParams.priceRange;
  }
}

@pegla.的可能副本。。我觉得有点不同。你能解释一下为什么它是重复的吗?我试过了&它不起作用。它显示的url与上面的url相同。如果您使用的是ui路由器,问题仍然存在,您需要url做什么?SPA不需要用户知道除了第一个打开的页面以外的任何url,所有的内容都应该由ui路由器处理。通过在url中需要/拥有数组值,您试图实现什么?我想使用控制器中的该参数从api检索数据,您将在构造函数中进行多次注入。其中一个是$stateParams,如果您想访问解析的数据,可以通过$stateParams.priceRange访问它,这就是您通过解析传递的数据。