【问题标题】:Bind value to dynamic dropdown, from localStorage - AngularJs将值绑定到动态下拉列表,来自 localStorage - AngularJs
【发布时间】:2021-07-02 23:26:25
【问题描述】:

我有这个项目,后端使用 VB,前端使用 AngularJS。我要解决的问题之一是在我更改页面然后返回所述页面后不保留其值的下拉列表。

更详细的:

  • 我有一个来自后端 - VB 的列表,其中包含我需要的所有数据。
  • 我有一个视图,它有 4 个下拉菜单可将过滤器应用到页面。
  • 我应用过滤器或过滤器组合以仅查看所需的应用程序。
  • 我点击了一个应用程序,因此我被重定向到该应用程序的页面。
  • 我在那里做了所有我必须做的事情,所以我点击浏览器后退按钮转到所有应用程序的列表。
  • 过滤器丢失了,我需要让它们仍然处于活动状态。
  • 列表项

<select id="issue1"
     ng-model="RecordStatus"
     ng-change="RecordStatusSelection(RecordStatus.ID_RecordStatus)"
     ng-options="RecordStatus.RecordStatusDesc for RecordStatus in MyDiversionESDList
   | unique:'RecordStatusDesc'
   | orderBy:'+RecordStatusDesc'">
   <option id="issue1" value="">-- Όλες --</option>
</select>

到目前为止我做了什么:

  • 我在localStorage中绑定每个下拉列表的值(准确地说是每个过滤器)
  • localStorage 值随着下拉菜单的变化而变化

我需要将localStorage 的值应用于所述下拉列表,以便当我返回此页面时仍然可以应用每个过滤器。

更多代码可以帮助你,帮助我:

1. js 代码,在控制器内部 - 我在其中获取过滤器并将其保存在 localStorage


$scope.RecordStatusSelection = function (recordStatus) {
        $scope.filterScope.ID_RecordStatus = recordStatus; 
        localStorage.setItem('sessionIdRecordStatus', recordStatus);
        return $scope.applyMasterFilter()
  }


2。 js 代码,我在其中应用过滤器


  $scope.applyMasterFilter = function (temp) {
      $scope.temp = localStorage.getItem('sessionIdRecordStatus');

      $scope.filteredDiversionESD = $filter("filter")($scope.MyDiversionESDList, $scope.filterScope)
      $scope.filteredDiversionESD = $filter("filter")($scope.filteredDiversionESD, 
$scope.searchKeywordsText)

    return $scope.onFilterChange()
}

【问题讨论】:

    标签: angularjs local-storage


    【解决方案1】:

    如果其他人有同样的问题:

    我使用了sessionsStorageSession 而不是 Local 因为我希望它在每次网站启动时都处于默认值。

    $scope.RecordStatusSelection = function (recordStatus) {
            sessionStorage.setItem('sessionIdRecordStatus', recordStatus);
            $scope.filterScope.ID_RecordStatus = sessionStorage.sessionIdRecordStatus; 
    
            return $scope.applyMasterFilter()
      }
    
    $scope.applyMasterFilter = function (temp) {
          $scope.filterScope.ID_RecordStatus = sessionStorage.sessionIdRecordStatus;
    
          $scope.filteredDiversionESD = $filter("filter")($scope.MyDiversionESDList, $scope.filterScope)
          $scope.filteredDiversionESD = $filter("filter")($scope.filteredDiversionESD, 
    $scope.searchKeywordsText)
    
        return $scope.onFilterChange()
    }
    

    效果很好,但不太好。值/选项已应用但未显示,我得到一个空框。

    如果我找到完整的解决方案,我会编辑这个答案。

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      相关资源
      最近更新 更多