ui-sref 参数选项 $state.href 未按预期工作

ui-sref params option with $state.href not working as expected

我有这样的状态定义:

 $stateProvider.state('password', {
    url: '/password',
    templateUrl: 'password.html',
    controller: 'PasswordController',
    controllerAs: 'ctrl',
    params: {
        accountNumber: {
            value: null,
            squash: true
        }
    },               
});

我需要用它的 href 来引用这个状态,而不是使用 ui-serif 指令,我如何在 href 中设置 params.accountNumber

这行不通:

$state.href('password', {accountNumber: $scope.accountNumber})

当我将此行 url: '/password', 更改为` url: '/password?accoutNumber' 并删除这部分时

params: {
    accountNumber: {
        value: null,
        squash: true
    }
}, 

$state.href 工作正常。

为了能够使用 $state.href 生成 URL 并传递参数...

  • 此类参数必须是 url 定义的一部分
  • 仅在 params: {} 中声明它会导致 href - 不包含它,不传递

有调整状态定义:

  .state('password', {
    url: '/password/:accountNumber',
    templateUrl: 'password.html',
    controller: 'PasswordController',
    controllerAs: 'ctrl',
    params: {
        accountNumber: {
            value: null,
            squash: true
        },
      },               
  });

a working plunker

原创部分,与打字错误有关

$state.href() 调用似乎没问题...只是状态定义可能是错误的:

$stateProvider.state('password', {
    //Url: '/password',
    url: '/password',
    ...

url 设置区分大小写。参见 state.href doc here

href(stateOrName, params, options)