首页 > 解决方案 > 将值绑定到动态下拉列表,来自 localStorage - AngularJs

问题描述

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

更详细地说:


<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应用于所述下拉列表,以便当我返回此页面时仍然可以应用每个过滤器。

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

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()
}

标签: angularjslocal-storage

解决方案


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

我用过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()
}

它运作良好,但不太好。值/选项已应用但未显示,我得到一个空框。

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


推荐阅读