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;
我有一个奇怪的问题,我只是想看看这是否可行。
我正在寻找的是一种在用户使用该应用程序时更新 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;