2015-06-16 5 views
1

Я использую angularjs с реализацией «Угловая материала» (здесь: https://material.angularjs.org/latest/#/)Невозможно изменить значение переменной angularjs

Я использую компонент SideNav: https://material.angularjs.org/latest/#/demo/material.components.sidenav, чтобы открыть боковую емкость по щелчку в меню ссылка. Он работает прямо сейчас ... Но когда я нажимаю элемент меню, я должен изменить значение логической переменной от false до истины. Этого не происходит. Почему я не знаю точно. В моем контроллере у меня есть эта часть кода:

$scope.toggleRight = buildToggler('right'); 
     $scope.myBoolean = false; 
     /** 
     * Build handler to open/close a SideNav; when animation finishes 
     * report completion in console 
     */ 
     function buildToggler(navID) { 
      var debounceFn = $mdUtil.debounce(function(){ 
       $mdSidenav(navID) 
        .toggle() 
        .then(function() { 
         $log.debug("toggle " + navID + " is done"); 
        }); 
      },300); 
      return debounceFn; 
     }; 
     $scope.close = function() { 
      $mdSidenav('right').close() 
       .then(function() { 
        $log.debug("close RIGHT is done"); 
       }); 
     }; 

Что это за открытие и закрытие контейнера. Тогда в моем HTML

   <li> 
        <a data-ng-click="myBoolean = true;"> 
         Open the container 
        </a> 
       </li> 

Так что, если переменная была «ложь» в настоящее время должно быть «истинным», когда пункт меню нажата. Но все равно остается ложным. Что случилось?

+0

Как вы проверяете, является ли эта переменная еще ложной? Я не могу видеть classContent в другом месте вашего кода. – doldt

+0

Извините, человек поправил сейчас. –

+0

@doldt любая идея? –

ответ

0

// Просто запишите ниже функции я контроллер

$scope.openContainer = function() { 
    $scope.myBoolean = true; 
} 

// и в окне просмотра изменений ниже

<li> 
    <a data-ng-click="openContainer()">Open the container</a> 
</li> 
0

Попробуйте изменить переменную таким образом:

<li> 
       <a data-ng-click="$parent.myBoolean = true;"> 
        Open the container 
       </a> 
      </li> 

Используйте свойство $ parent. Я считаю, что компонент sidenav имеет свою собственную область действия, а ссылка находится внутри компонента sidenav. Таким образом, чтобы получить доступ к переменной в вашей области действия, вам нужно перейти на один уровень вверх (в родительском поле)

Смежные вопросы