奇怪的ui-sref行为:尽管试图改变,旧的params仍然保留在URL

时间:2016-11-25 15:02:32

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

这是我的州定义:

$stateProvider
        .state('app.reports', {
            url: '/reports?param1&param2',
            templateUrl: 'app/modules/report/views/reports.html',
            controller: 'reportController',
            controllerAs: 'vm'
        });

当我点击这些时,

<a ui-sref="app.reports({param1:'param1'})">

它按照我的预期工作,它调用我从reportController定义和调用的服务工厂函数,并从REST服务获取数据并显示它。该网址为http://.../#/app/reports?param1=param1

点击后,

<a ui-sref="app.reports({param2:'param2'})">

它不起作用。我的“工厂”功能未被调用,没有任何REST调用,因此数据不会更改。不知何故,网址为http://.../#/app/reports?param1=param1&param2=param2

这有点奇怪吗?

编辑:您可以在此处查看http://plnkr.co/edit/wmfgqY9hCmIj9Bk39NaP?p=preview

1 个答案:

答案 0 :(得分:0)

这是因为在您的第二个<a ui-sref>代码中,您的参数1为undefined,因此生成的网址为http://..../#/app/reports?UNDEFINED&param2=param2

您需要定义参数1,因为它认为参数2取决于它。

我希望这能解决问题!