ng-click更改父类

时间:2015-01-07 16:56:26

标签: javascript css angularjs

我正在尝试构建一个简单的滑出菜单,我使用菜单按钮可以正常工作。

<div class="menu-button" ng-click="show_menu = !show_menu"></div>

<div class="side-menu" ng-class="{true: 'show_menu'}[show_menu]">
        <div class="filters-generic filter-{{filter.filter_type}}" ng-repeat="filter in filters" ng-click="show_menu = !show_menu;filterby(filter.filter_type)">{{filter.filter_type}}</div>
</div>

CSS

.side-menu {
  left: -25%;
  position: absolute;
  transition: all 0.2s linear 0s;
  width: 25%;
  background: #000;
}

.side-menu.show_menu {
    left:0%;
}

当我按下menu-button div它工作正常(即它添加了类),但是我也希望能够在选择里面的项目时关闭菜单,我已经尝试了上面但没有正在发生。

我原本认为这与它调用另一个功能的事实有关,但我甚至删除了它,但仍然存在相同的问题。我误解了ng-click的工作原理吗?

1 个答案:

答案 0 :(得分:0)

ng-repeat指令创建新范围 - 您的show_menu存在的范围的子范围。因此,通过单击菜单项(我认为是某些过滤器),您实际上正在更改该子范围中的show_menu。但ng-class在父范围内监视show_menu,但未更改。

有关详细信息,请参阅此处:https://github.com/angular/angular.js/wiki/Understanding-Scopes

PS :您可以撰写ng-class

<div class="side-menu" ng-class="{ 'show_menu': show_menu }">
我认为,这更简洁明了。