角度ui-router更改URL,没有控制器重新加载

时间:2017-05-10 13:15:20

标签: javascript angularjs angular-ui-router

我正在开发一个角度为1.6.x和ui-router 1.0.x的项目

我想更改浏览器网址而不重新加载状态,为此我尝试了这个:

   $state.transitionTo($state.$current.name, {param1: "value"}, {
                location: true,
                inherit: true,
                relative: $state.$current,
                reload: false,
                //Seems to be deprecated...
                notify: false
            });

我只想更改url中的 param1 值,但 transitionTo 重新加载我当前的状态,因此销毁并重新创建我的控制器。

我之前使用的是ui-router 0.x,而 notify 参数也适用于此。

如何使用ui-router 1.0.x执行此操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为这是一个错误(使用ui-router 1.0.3)。

定义:

.state('app.order', {
        url: '/order/:id',
        params: { 
            id: { value: null }    // id is optional
        },
        .....

尝试了所有变体:

 some_id can either be an int or null

 $state.go('.', {
            id: some_id
        }, { location: true });

 $state.go('.', {
            id: some_id
        }, { location: "replace" });

 $state.go('.', {
            id: some_id
        }, { location: true, reload: false });

 $state.go('.', {
            id: some_id
        }, { location: "replace", reload: false });

答案 1 :(得分:0)

事实是我没有朝着正确的方向前进!

为此,我必须将参数定义为动态:

https://ui-router.github.io/ng1/docs/latest/interfaces/params.paramdeclaration.html#dynamic

感谢@Anber