如何仅更新浏览器URL,而不是AngularJs中的状态

时间:2017-02-14 16:27:29

标签: angularjs angular-ui-router

可以说,有一个应用程序,可以针对不同的单位运行,具有不同的名称。之前,当用户选择另一个单元时,我们只是恢复控制器,并为新单元加载新数据,此更改未反映在网址上。但是,现在我们需要在网址中添加单位名称。 例如,我们有以下状态:

    $stateProvider.state('management', {
            url: '/management',
            templateUrl: 'features/management/templates/management.html'
        });   

在浏览器中我们可以看到:

http://localhost:84/#/management

现在,当我们进入那个状态时,我需要浏览器显示如下内容:

http://localhost:84/#/unitName/management

例如我们有unit1,unit2,unit3,当用户在它们之间切换时,url将更改为

http://localhost:84/#/unit1/management, 

http://localhost:84/#/unit2/management,

http://localhost:84/#/unit3/management

等等。

我可以从service获取unitName,例如unitService.js,它将返回一个单位名称作为字符串。但我不知道如何在浏览器中将此字符串添加到url。应将此单位名称添加到所有路线,但不更改它们。

我可以创建第一个函数,即在加载所有数据后将单位名称添加到浏览器URL,第二个函数,当angular开始通过url搜索状态时将删除该字符串,因此它将取代unit1 / management寻找/管理国家?

有可能吗?先感谢您。

1 个答案:

答案 0 :(得分:0)

您可以使用notify: false

路线声明

$stateProvider.state('management', {
    url: '/:unit/management',
    templateUrl: 'features/management/templates/management.html'
});

状态示例

$state.go('management', {unit: 'unit1'}, {notify: false})