2014-06-19 29 views
1

我試圖完成切換open類到nav元素與按鈕點擊。 下面的代碼不分配open類到nav既不刪除open當按鈕被點擊。ng-click和ng-class切換類

<nav class="slide-menu" ng-class="{'open': open, '': !open}"> 

<button class="slide-btn" ng-click="open=!open"></button> 

我知道''這顯然是錯誤的,因爲它只是將字面類型指定爲類。

+0

嘗試'ng-class =「{'open':open}」',我們不需要''':!open' –

+0

我試過最初,不工作.. –

+0

適用於我: http://jsfiddle.net/WgJmz/1/ –

回答

5

嘗試添加ng-init到容器DIV:

<div ng-init="open=false"> 
    <nav class="slide-menu" ng-class="{'open': open}"> 
    <button class="slide-btn" ng-click="open=!open"></button> 
</div> 

或者在你的範圍添加$scope.open = false;

在上面的代碼中會發生什麼事是,這兩個因素中的每一個都有它自己的範圍內,其中包含一個open屬性,這樣你就可以在另一個元素將它們包裝(也有它自己的範圍內),並放置open財產有。所以在navbutton的內部範圍中,當它試圖尋找一個名爲open的屬性時,它會查找它自己的作用域並且找不到它,所以它在它的父作用域(包裝div)中查找並在其中找到它。

您可以瞭解更多關於角範圍繼承從這裏: https://github.com/angular/angular.js/wiki/Understanding-Scopes

- 而且,你不需要'': !open部分。