能否在使用angularjs时,点击浏览器返回按钮时保留模型值?

IT小君   2023-05-12T00:58:41

我是AngularJS的新手,我有一个下拉菜单和一个链接。当我点击链接时,AngularJS会路由到一个不同的视图(例如,显示图表和表格)。

然后当我点击浏览器的返回按钮时,下拉菜单将显示默认值,而不是我之前选择的值。

是否可以让AngularJS在我点击链接并点击浏览器的返回按钮时记住下拉菜单的选择值?

<select ng-model="selectedManagerFilter" ng-init="selectedManagerFilter= selectedManagerFilter || '*'" 
ng-options="item.Code as item.Name for item in ManagerFilters" id="lstManagementGroup" name="lstManagementGroup"></select>
点击广告,支持我们为你提供更好的服务
评论(1)
IT小君

当您退出页面时,您的范围将被清除,并在您返回页面时使用默认值重新创建。

您有两个选择:

  1. 使用服务来保留此类信息(例如来自下拉列表的selectedItem)和其他有用的东西。应将下拉列表中选择的选项绑定到服务对象:

    angular.module('shared').factory('UsefulService', function() {
    
    var UsefulService = {};
    
    UsefulService.myPageSettings = {
        currentDropDownItem: 1, //这是您需要的
        otherSetting: "blah"
    };
    
    return UsefulService;
    });
    

在控制器中,您应将作用域变量绑定到它(不要忘记在控制器的依赖项中要求UsefulService):

$scope.myDearSettings = UsefulService.myPageSettings;

然后使用$scope.myDearSettings.currentDropDownItem;访问它。

  1. 您可以在下拉列表更改时(绑定到值)在路由上设置哈希,因此当您点击后退时,由于哈希,您将回到相同的状态。基本上,您在地址栏中的URL将如下所示:http://your_server:your_port/myPage#Today,其中Today是所选项目。

最推荐的解决方案是选项#1。

2023-05-12T00:59:14   回复