2016-05-03 100 views
0

這是我的代碼。我使用$ localStorage將對象推入數組。當我點擊按鈕時,對象被正確推入並再次拼接相同的對象,然後單擊相同的按鈕。 $ localStorage.tableArray分配給$ scope.Storage作爲下拉列表。按鈕動作完成後,下拉列表會變好。

我的問題是$ scope。$存儲有兩個項目。如果我刷新頁面下拉列表不來。 如果我按下或按鈕下拉列表中執行拼接動作很好。

請幫助如何在刷新頁面時獲取$ scope。$ storage items到下拉列表中。 我創建一個關於這個的重擊者。檢查一次

HTML:

<body ng-controller="MainCtrl"> 
<a class="btn {{table.btnClass}} btn-success" ng-repeat="table in tablelist" ng-click="getTable(table)" style="padding-left:1px">{{table.tablename}}</a> 
<select ng-options="table.tablename as table.tablename for table in $storage" ng-model="table.tablename"><option value="">---select table---</option></select> 

JS:

var app = angular.module('plunker', ["ngStorage"]); 
     app.controller('MainCtrl', function ($scope,$localStorage,$filter) { 
      $scope.tablelist = [{ "tablename": "t1" }, { "tablename": "t2" },{ "tablename": "t3" },{ "tablename": "t4" }] 
     if ($localStorage.tableArray === undefined) { 
      $localStorage.tableArray = [] 
     } 
     if ($localStorage.tableslist === undefined) { 
      $localStorage.tableslist = [] 
     } 

     angular.forEach($scope.tablelist, function (list, $index) { 
      var found = $filter('filter')($localStorage.tableArray, { tablename: list.tablename }, true); 
      if (found.length) { 
       $scope.tablelist[$index].btnClass = found[0].btnClass; 
      } 
     }); 


     $scope.getTable = function (table) { 

      table.btnClass = table.btnClass == "btn-danger" ? "btn-success" : "btn-danger" 
      var exists = false; 
      angular.forEach($localStorage.tableArray, function (list, $index) { 
       if ((list.tablename == table.tablename)) { 
        console.log(list.tablename) 
        console.log(table.tablename) 
        exists = true; 
        $localStorage.tableArray.splice($index, 1) 
        $localStorage.tableslist.splice($index, 1) 
        $scope.$storage= $localStorage.tableArray; 
        console.log($scope.$storage) 

        return false 
       } 
      }); 
      if (!exists) { 
       $localStorage.tableslist.push(table) 
       $localStorage.tableArray = $localStorage.tableslist; 
       $scope.$storage = $localStorage.tableArray 
       console.log($localStorage.tableArray) 
       table.color = "red" 
      } 
     } 
    }); 

​​

+0

太謝謝你了@ Fidel90。爲我工作 – SrinivasAppQube

回答

1

按我的理解,你想成爲與存儲在刷新初始化您的下拉列表來自本地存儲的價值。

控制器中添加以下行對我的作品:

$scope.$storage = $localStorage.tableArray 

檢查plnkr