angularjs - 带有 $state.href 的 ui-sref params 选项未按预期工作

标签 angularjs angular-ui-router directive ui-sref

我有一个这样的状态定义:

 $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)

关于angularjs - 带有 $state.href 的 ui-sref params 选项未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39201948/

相关文章:

angular - 无法在服务器启动时重定向到延迟加载模块作为默认路由/URL

javascript - 在指令中使用工厂

javascript - 使用 gulp 进行丑化时,Angular-ui-router 会中断

javascript - 如何自动注入(inject)状态参数

javascript - ngAnimate 与 ui-view

javascript - 在指令中使用 controllerAs 语法放置点击处理程序的位置

javascript - 单击指令 ng-repeat 项时如何切换 ng-class

angularjs - 迭代字典中列表中的值以获取关键的 angularjs

angularjs - Angular-ui模态,从$ http将数据发送到模态 Controller

javascript - 我的指令停止与另一个指令结合使用.. Angular.js