如果所需的数据可以序列化为 { key
, value
},那么您可以使用$location.search()
在控制器中保存和检索此信息:
app.controller("myCtrl", function ($scope, $location, $routeParams) {
// Load State
var savedState = $location.search();
allProperties.forEach(function (k) {
if (typeof savedState[k] !== 'undefined') {
$scope.model[k] = savedState[k];
} else {
$scope.model[k] = defaultValues[k];
}
});
// Save the parameters
$scope.createUrlWithCurrentState = function() {
allProperties.forEach(function (k) {
$location.search(k, $scope.model[k]);
});
});
})
现在您可以调用每个createUrlWithCurrentState
具有an 的元素,并且每次更改都会保存状态,或者您可以在on按钮中调用此函数。ng-change
input
ng-model
ng-click
Create a link to this page
不过,您必须注意保持allProperties
和defaultValues
更新以保存所有必需的参数。
至于是否应该这样做,答案取决于您的用例。如果您必须允许共享链接,那么在 URL 中保持状态的选择很少。
但是,某些状态可能不容易序列化,或者数据可能太长而无法保存在 URL 中。
如果您只想保留当前会话或浏览器的检索信息,可以查看或$cookieStore
DOM Storage API。