如何使用ui.router模块通过url将数组传递给AngularJS应用程序

Edg*_*rka 3 angularjs angular-ui-router

我使用Angular 1.5和ui.router模块,并希望将int数组传递到app throw url.www.example.com/#/filter?[1,2,5]或www.example.com/#/filter/[1,2,5]或其他内容.

.state('cats', {
             url: '/filter?catsIds', // or /filter/{catsIds}
             templateUrl:'cats.html',
             controller: 'catsCtrl'
         })
Run Code Online (Sandbox Code Playgroud)

目标:

app.controller('catsCtrl',function($stateParams){
    console.log(Array.isArray($stateParams.catsIds)) // goal true
    ...
Run Code Online (Sandbox Code Playgroud)

Pan*_*kar 7

你不能通过ui-router参数传递对象,我会说在传递值时将它,分开然后传递它.

因此,在呼叫状态时,请执行以下操作

$state.go('cats', { catsIds: [1,2,5].join(',') })
Run Code Online (Sandbox Code Playgroud)

将在URL下面形成

www.example.com/#/filter/1,2,5
Run Code Online (Sandbox Code Playgroud)

从它读取它时,$stateParams将该字符串拆分为,

app.controller('catsCtrl',function($stateParams){
    console.log($stateParams.catsIds.split(','))
Run Code Online (Sandbox Code Playgroud)