2015-10-26 2 views
2

Я новичок в angularjs и сделал демо в выпадающем меню, я сделал его успешно, и он отлично работает. Но теперь я хочу сохранить последний выбранный элемент, когда мы его снова откроем, Мой код, как показано ниже, может anybuddy, пожалуйста, помогите мне решить эту проблему?как сохранить выпадающий пункт, выбранный в angularjs

HTML

<span class="toolbar-button--quiet navigation-bar__line-height" style="border: none; padding: 0"> 
       <i class="ion-android-more-vertical" dropdown-disabled="isDropdownDisabled" style="font-size: 26px; margin: 0; padding: 0 17px 0 12px;" dropdown-menu="ddMenuOptions" dropdown-model="ddMenuSelected" dropdown-disabled="dropdownsDisabled"></i> 

      </span> 

JS

$scope.ddMenuOptions = [ 
      { 
       text: 'Featured', 
       code: 'F' 
//  divider: true 
      }, { 
       text: 'Name (A-Z)', 
       code: 'A' 
//  divider: true 
      }, { 
       text: 'Rating', 
       code: 'M' 
//  divider: true 
      }, { 
       text: ' Most Popular', 
       code: 'MP' 
//  divider: true 
      } 
     ]; 

     $scope.ddMenuSelected = { 
     }; 

     $scope.$watch("ddMenuSelected", function(newValue, oldValue) { 

      $scope.selectedItem = newValue; 
      var result = document.getElementsByClassName("dropdown"); 
      var wrappedResult = angular.element(result); 
      // alert("Selected" + wrappedResult); 
      // wrappedResult.removeClass('active'); 
      wrappedResult.addClass('activated'); 
      if (newValue !== oldValue) { 

       console.log("=========" + $scope.ddMenuSelected.code); 
       //window.reload(true); 
       $rootScope.ddMenuOptions = false; 
// $scope.ddMenuOptions=false; 
       Content = ' '; 
       if (noNetwork == false) { 

        reload(); 
       } else { 

        ons.notification.alert({message: 'We are unable to process, please check your internet connection.', 
         callback: function(idx) { 
          switch (idx) { 
           case 0: 
            gallery.popPage(); 

            break; 

          } 
         }}); 
       } 
      } 


     }); 
+0

чем проблема? Пожалуйста, объясните проблему, с которой вы столкнулись. – Michael

+0

@ Michael-i хочу, чтобы элемент был «выбран», когда я снова открываю раскрывающееся меню. –

+0

да, но с чем вы сталкиваетесь? Что не работает? Пожалуйста, опишите проблему, которая у вас есть. Я не вижу никаких проблем. Я просто вижу несколько фрагментов кода. – Michael

ответ

1

Вы должны хранить selectedItem где-то, где он выживает. Вне контроллера вы обычно храните его в service или rootScope.

При повторном инициализации контроллера вы устанавливаете старое значение selectedItem на ddMenuSelected.

, например:

$scope.ddMenuSelected = $rootScope.selectedItem; 

Я не знаю, что вы имеете в виду открыть его снова и что вы делаете в функции перезарядка(). Но типичным угловым приложением является одностраничное приложение, которое не должно перезагружать страницу/приложение. Это будет ужасная проблема дизайна, но в этом случае вам нужно сохранить значение где-нибудь, где оно может выжить. Либо вы храните его на стороне сервера, либо сохраните его в HTML5 localStore.

См http://www.w3schools.com/html/html5_webstorage.asp и http://www.ellipsetours.com/Demos/storage/

+0

Здравствуйте, Спасибо за ваш ответ Майкл, я объясняю вам здесь. Что это за popup делает, моя ** перезагрузка ** функция делает вызов http-запроса для загрузки данных, и у меня есть раскрывающееся меню для сортировки этой цели данных, теперь надеюсь, что вы получили то, что я сделал .. :) –

+0

открыть его снова означает его выпадающее меню, поэтому всякий раз, когда мы нажимаем кнопку переключения [ мы можем открыть выпадающее меню столько раз, сколько хотим, вы меня поймаете? –

+0

Затем установите значение '$ scope.ddMenuSelected' для предыдущего выбора. Если вы не инициализируете его, оно не отображает предыдущее значение. Где именно проблема? – Michael