Директива AngularJS для мобильной навигации

0

Я пытаюсь построить директиву AngularJS для переключения моего мобильного навигатора, но он не работает. Что я делаю не так?

Директива

app.directive('mobileDirective', function(){
  return {
    restrict: 'A',
    link: function (scope, element, attrs){
      element.bind('onclick', function(){
        var status = element[0].className = "is-o";
        if(status){
          element[0].className = ".mobile-nav-toggle mobile-nav";
        }else{
          element[0].className = ".mobile-nav-toggle mobile-nav is-o";
        }
      });
    }
  }
});

Index.html

  <header data-ng-controller="navController">
    <div class="header-position">
      <a href="/" class="logo img-responsive"><img src="./assets/images/codehan_logo_raw.svg" class="mobile-logo" /></a>
      <nav id="nav" class="site-nav">
        <ul>
          <li data-ng-repeat="item in menu_items">
            <a data-ng-class="{ active: isActive('/{{item.name}}')}" href="{{item.name}}">{{item.name}}</a>
          </li>
        </ul>
      </nav>
      <div class="mobile-nav-toggle mobile-directive"><span></span></div>
    </div>
    <div id="m-nav" class="mobile-nav mobile-directive">
      <ul>
        <li data-ng-repeat="item in menu_items">
          <a data-ng-class="{ active: isActive('/{{item.name}}')}" href="{{item.name}}">{{item.name}}</a>
        </li>
      </ul>
    </div>
  </header>

С jQuery это выглядит так и отлично работает

function mobileNav(){
  $('.mobile-nav-toggle').on('click', function(){
    var status = $(this).hasClass('is-o');
    if(status){
      $('.mobile-nav-toggle, .mobile-nav').removeClass('is-o');
    }else{
      $('.mobile-nav-toggle, .mobile-nav').addClass('is-o');
    }
  });
}
  • 0
    вы используете mobile-directive качестве имени класса. Однако его использование в качестве attribute ограничено. поменяй одну из них и попробуй.
  • 0
    поменял .. еще не работает :(
Показать ещё 1 комментарий
Теги:
navigation
mobile
angularjs-directive

1 ответ

0

Для записи (я знаю, что это древний), я уверен, что проблема могла быть в этой строке;

var status = element[0].className = "is-o";

Вы устанавливаете status и element[0].classname на "is-o", вместо этого он должен читать;

var status = element[0].className === "is-o";

Значение status equall независимо от результата element[0].className === "is-o" is.. Я не уверен, что решение как таковое, но для такого старого сообщения я даже не уверен, почему я указывая эту ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню