2016-05-03 15 views
0

Das ist mein Code. Ich verwende $ localStorage, um ein Objekt in ein Array zu schieben. Wenn ich auf den Knopf klicke, wird das Objekt richtig gedrückt und das selbe Objekt wird erneut gespleißt. $ localStorage.tableArray wird der $ scope.Storage für die Dropdown-Liste zugewiesen. Drop-Down-Liste kommt gut, wenn die Schaltfläche Aktion ausgeführt wird.

Mein Problem ist der $ scope. $ Speicher mit zwei Elementen. wenn ich die Seite aktualisieren Dropdown-Liste nicht kam. , wenn ich drückende oder spleißende Handlung, die auf den Knöpfen durchgeführt wird, Dropdownliste kommen gut.

Bitte helfen Sie, $ scope. $ Speicherelemente in die Dropdown-Liste zu erhalten, wenn Sie die Seite aktualisieren. Ich erstelle einen Plunker diesbezüglich. überprüfen einmal

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" 
      } 
     } 
    }); 

https://plnkr.co/edit/0RpAGVR5ZpVFMvmmxipu?p=preview

+0

Vielen Dank @ Fidel90. für mich arbeiten – SrinivasAppQube

Antwort

1

Wie pro mein Verständnis Sie Ihre Drop-Down-Liste auf Refresh mit dem gespeicherten initialisiert werden Wert von Ihrem lokalen Speicher.

Hinzufügen unterhalb der Linie in der Steuerung funktioniert für mich:

$scope.$storage = $localStorage.tableArray 

prüfen plnkr