2014-04-05 15 views
-1

ng-class指令中,我有一個表達式調用帶花括號的參數的作用域方法。如果該變量在控制器(其中放置了ng-class的元素)中進行了初始化,則該參數很好,但如果它稍後發生更改,那麼當調用scope方法時,將使用該變量的舊值調用該變量。 Here is a plunker for better understanding of my problem.爲什麼會發生這種情況,我該如何解決這個問題。Ang ng類和表達式

P.S.謝謝你的建議,是的,你是對的,但我忘記爲我的案件添加一個細節。我不能只傳遞變量,因爲它是一個包含其他東西的字符串的一部分。 Here is an updated plunker.

更新:我使用ui路由器及其ui-srefui-sref-active指令解決了我的問題。但感謝您的建議。

回答

0

只是不要使用大括號。

<div ng-class="{active:isActive(val)}"></div> 

或根據您的更新:

<div ng-class="{active:isActive('prefix/'+val)}"></div> 
+0

感謝您的建議,請參閱更新。 – Nikolay

0

ng-class="{active:isActive(val)}"

Plunk

編輯:

嘗試用ng-class="{active:isActive('prefix/' + val)}"

+0

感謝您的建議,請參閱更新。 – Nikolay

+0

@Nikolay我更新了答案。老實說,我不知道角度足以解釋爲什麼插值不重新評估,但我會看看。 – plalx

+0

謝謝,但我仍然不想這樣做,因爲在我的情況下會做代碼重複,因此違反了DRY原則。 – Nikolay