$ state.go使用URL参数说明

时间:2018-01-29 10:56:44

标签: angularjs angular-ui-router

我有一个带url参数的状态。 类似的东西:

.state('MyState', {
    url: '/contacts/{personName}',
    templateUrl: '/app/templates/contacts.html',
    controller: 'ContactsController',
    params: {
        personName: null
    }
})

现在,我想使用$state.go语法,并能够使用参数将personName参数传递给网址。

例如,如果我打电话:

$state.go('MyState', {personName: 'john'});

地址栏会显示:http://localhost:8080/#!/contacts/john

现在地址栏显示http://localhost:8080/#!/contacts/,我不知道如何强制网址包含personName。除此之外它工作正常。

3 个答案:

答案 0 :(得分:1)

只需在状态定义中使用默认值添加参数即可。您的州仍可以拥有网址值。

   $stateProvider.state('MyState', {
        url : '/url',
        templateUrl : "/app/templates/contacts.html",
        controller : 'ContactsController',
        params: {personName: 'defaultName'}
    });

并将参数添加到$ state.go()并导航

$state.go('MyState',{personName: "MIT"});

请参阅:$state.go() with Parameter

希望它有帮助..!

答案 1 :(得分:0)

在你的州定义中,当你定义“params”时,你不必在url中添加param,所以替换:

url: '/contacts/{personName}',

url: '/contacts',

答案 2 :(得分:0)

定义状态时使用以下语法

.state('myState', {
        url: '/contacts/:personName',
        templateUrl: '/app/templates/contacts.html',
        controller: 'ContactsController',
          params: {
            personName: {
              array: false
            }
          }
      })

注意:"人名在网址中显示"

参考:https://ui-router.github.io/ng1/tutorial/helloworld