2016-06-17 18 views
0

我試圖將其設置爲納克級的一個值,但如果表達式的計算結果爲真,那麼在納克級兩個班首次加載時所應用的第一次加載頁面時到標籤。
我使用的字體真棒,兩個圖標之間切換。這裏是ng級的代碼:伍級導致兩個類是主動

<div class="checkLabel checkbox handPointer" ng-click="test = !test"> 
    <i class="fa fa-fw fa-lg" ng-init="test = false" ng-class="test ? 'fa-check-square-o' : 'fa-square-o'"></i> 
    <label>test</label> 
</div> 

當我加載頁面時,有一個http請求更新測試變量。如果測試變量的計算結果爲false,那麼沒有問題。但是,如果測試變量的計算結果爲true,那麼'fa-square-o'和'fa-check-square-o'都應用於html元素的類。當我檢查瀏覽器上的元素時,我會看到這一點。

<i class="fa fa-fw fa-lg fa-square-o fa-check-square-o" ng-init="test = false" ng-class="test ? 'fa-check-square-o' : 'fa-square-o'"></i> 

角HTTP請求

var promise = $http.getData("URL"); 
promise.then(function(result) { 
    // use the result 
    $scope.test = true; 
} 

另外一個需要注意的是,當我點擊它的div切換測試變量(沒有工作)。因此,當頁面加載如果測試變量的計算結果爲true,那麼它會顯示錯誤的圖片(FA-方-O),因爲這兩個類將被應用,當我點擊div的,第一次也不會改變,因爲它的圖片將變量更改爲false,並且ng類正常工作(顯示fa-square-o)。然後,當我再次單擊它時,它會將測試更改爲true,並顯示正確的圖片(fa-check-square-o)。

任何幫助將不勝感激!

編輯:

我發現這個bug的一個奇怪的方面。這段代碼被包含在一個角度指令中,並且取決於所選擇的選項卡,該指令將是可見的或不可見的。爲簡單起見,假設代碼在選項卡A上,並且存在另一個選項卡B.當選項卡A被選中時,將會調用該承諾。當頁面在選項卡A上刷新時,會發生此錯誤。當頁面在標籤B上刷新,然後選擇標籤A時,將顯示正確的圖像。我希望我解釋清楚,如果不是,請隨時要求澄清。

UPDATE:

我不知道這究竟是一個解決方案,但我得到它的工作我改變初值爲true。就像我說的,我不知道爲什麼這個工作,但是當我改變了它開始爲真,那麼正確的畫面將出現在負載和股利時,點擊就沒有問題。

+0

如果測試在控制器而不是HTML文件中初始化會怎麼樣? – Sagar

+0

@Sagar我現在初始化它的控制器,但它仍然有同樣的問題,感謝我認爲它會工作太的想法。 –

回答

0

我認爲你有引號錯誤假設你是不是一個真正的舊版本的角。

<div class="checkLabel checkbox handPointer" ng-click="test = !test"> 
    <i class="fa fa-fw fa-lg" ng-init="test = false" ng-class="test ? 'fa-check-square-o' : 'fa-square-o'"></i> 
    <label>test</label> 
</div> 

如果不工作檢查這個帖子出來:AngularJS toggle class using ng-class

+1

ng-class =「test」? 'fa-check-square-o':'fa-square-o'〜這是一個有效的語法嗎? –

+0

不,不是。我很好的編輯它,謝謝。 –

0

你嘗試當您嘗試,會發生什麼?

<i class="fa fa-fw fa-lg" ng-init="test=false" ng-class="{'fa-check-square-o': test, 'fa-square-o': !test}"></i> 
+0

我試過了,它和以前一樣有問題。 –