单击带有angularjs的浏览器后退按钮时,我可以保留模型值吗?

时间:2015-08-06 15:07:47

标签: angularjs

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

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

单击浏览器的后退按钮时,单击链接时是否可以让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 个答案:

答案 0 :(得分:2)

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

您有两个选择:

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

    call_bash = subprocess.Popen(['/space/jazz/1/users/gwarner/test.sh'],stdout=subprocess.PIPE)
    output = call_bash.communicate()[0]
    
  2. 并且在你的控制器中你应该将范围变量绑定到它(不要忘记在控制器的依赖项中要求 UsefulService ):

    subprocess.call()

    然后使用angular.module('shared').factory('UsefulService', function() { var UsefulService = {}; UsefulService.myPageSettings = { currentDropDownItem: 1, //this is what you need otherSetting: "blah" }; return UsefulService; });

    访问它
    1. 您可以在下拉列表更改(绑定到值)时在路由上设置哈希值,因此当您点击后退时,由于哈希值,您将达到相同的状态。基本上,地址栏中的网址将如下所示: http://your_server:your_port/myPage#Today 其中今天是所选项目。
    2. 最推荐的解决方案是选项#1。