Angular, ui-router "binding" to url, 也没有刷新

Angular, ui-router "binding" to url, also without refreshing

我有一个奇怪的问题,我只是想看看这是否可行。

我正在寻找的是一种在用户使用该应用程序时更新 url 的方法 - 当他们单击页面上的几个不同项目时,我希望它几乎 "bind"到我设置的url参数。所以我喜欢 -

 url: 'app/:mod1/:mod2',

在我的路线中,当用户与页面上的按钮交互时,其中 2 个绑定到控制器中的范围,假设

 $scope.mod1 = true;
 $scope.mod2 = false;

然后当用户与他们交互时,它会相应地更改 url。因此,如果他们单击按钮并设置 mod1 = false 和 mod2 = true,则 url 将变为

/app/false/true

关键是——我希望能够做到这一点而无需每次都刷新页面(如果一开始就可能的话)。这个想法是为了让用户可以复制 url 并在以后使用它 - 有点像保存状态。关于此事的任何建议都会非常有价值,因为我不确定去哪里找。感谢您抽空阅读!

您可以使用 $location.search() 来读写属性到 URL。它们将作为参数出现。你的情况

http://site/page?mod1=true&mod2=false

要更新您要执行的值:

$location.search({mod1: $scope.mod1, mod2: $scope.mod2});

并且在您的控制器中,当页面首次加载时您读回这些值:

$scope.mod1 = $location.search().mod1;
$scope.mod2 = $location.search().mod2;