gpt4 book ai didi

javascript - 使用 Angularjs 在 URL 中存储 View 状态

转载 作者:搜寻专家 更新时间:2023-11-01 04:09:25 25 4
gpt4 key购买 nike

关于将 View 状态存储为 Angularjs 中 URL 的一部分的一般(如果有的话)共识是什么?我将如何去做?我有一个相当复杂的 View /路由,其中​​包含许多要设置的过滤器、选项卡等,这会导致 View 状态。

我看到了将所有这些 View 组件的状态存储为 URL 的一部分的优势,这样可以在应用程序中更轻松地导航(导航 back 将恢复之前的 View ,其中包含所有选择而无需加载来自服务器的状态,这将是一个替代方案)。另一个优点是 View 状态可以添加书签。

是否有一种模式可供我用作指导?有没有人以前做过这个并且可以分享一些经验?我应该避免在 URL 中存储 View 状态吗?

最佳答案

如果需要的数据可以序列化为{ key, value },那么可以使用$location.search()在您的 Controller 中保存和检索此信息:

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 并为每个具有 ng-modelinput 元素调用 ng-change每次更改都会保存状态,或者您可以在 ng-click 中的 Create a link to this page 按钮上调用此函数。

不过,您必须注意更新 allPropertiesdefaultValues 以保存所有必需的参数。


至于这是否应该完成,答案取决于您的用例。如果您必须允许共享链接,那么除了在 URL 中保持状态之外几乎没有其他选择。

然而,一些状态可能不容易序列化或者数据可能just be too long to save in the URL .

如果只想保留当前 session 或浏览器的检索信息,可以查看the $cookieStorethe DOM Storage API .

关于javascript - 使用 Angularjs 在 URL 中存储 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com