在angular-ui-router中从ui-sref更改当前状态的url参数

Ole*_*leg 5 javascript angularjs angular-ui-router

使用ui-router我想设置一个URL参数,无论我处于什么状态.用例是在可书签界面模式之间切换(例如"无聊"或"有趣").

我知道它可以使用ng-click指令来完成,但在这种情况下,我留下了href-less锚点,这不是很有用.

我已经尝试过最明显的ui-sref=".({foo:'bar'})"但是失败的是"没有为路径提供参考点."

ui-router是否有本机解决方案来执行此操作?理想情况下,我希望有类似的东西:

<a ui-sref="currentState({interface:'boring'})">boring</a>
<a ui-sref="currentState({interface:'fun'})">fun</a>
Run Code Online (Sandbox Code Playgroud)

Ole*_*leg 11

似乎这个功能在ui-router的尚未发布的主分支中可用:

<a ui-sref="{foo:'bar'}">foobar</a>
Run Code Online (Sandbox Code Playgroud)

请参阅相关问题:https://github.com/angular-ui/ui-router/issues/1031


Vex*_*ter 5

或者暂时你可以在控制器或应用程序中执行类似的操作,因为我喜欢这样做,所以它随处可见(每个视图):

appModule.run(function($rootScope, $state, $stateParams) {
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;
        $rootScope.$on('$stateChangeSuccess', function(ev, to, toParams, from) {
            $rootScope.previousState = from.name;
            $rootScope.currentState = to.name;
        });
    });
Run Code Online (Sandbox Code Playgroud)

然后应该可以使用:

<a ui-sref="{{currentState}}({interface:'boring'})">boring</a>
Run Code Online (Sandbox Code Playgroud)