我想實現一個書籤般的功能到應用中,不得不看變量,它存儲所有的書籤的ID的。基於這個變量,我必須告訴ng-class
重新評估它的函數表達式,因此類bookmarked
get的添加與否。
我如何告訴ng-class
再次運行變量$scope.Bookmarks
的變化是什麼時候?
<a ng-repeat="event in events"
ng-class="isBookmarked(event.id)"
class="icon__bookmark"></a>
我想實現一個書籤般的功能到應用中,不得不看變量,它存儲所有的書籤的ID的。基於這個變量,我必須告訴ng-class
重新評估它的函數表達式,因此類bookmarked
get的添加與否。
我如何告訴ng-class
再次運行變量$scope.Bookmarks
的變化是什麼時候?
<a ng-repeat="event in events"
ng-class="isBookmarked(event.id)"
class="icon__bookmark"></a>
如果書籤ID是由角處理的代碼被改變(如控制器,一個指令,一個服務,$ HTTP回調,等等),那麼你就不需要在做什麼所有。 Angular會在需要時自動重新評估isBookmarked(event.id)
,以確保UI始終處於最新狀態。
如果出於某種原因,更新必須在由angular處理的代碼之外(例如在外部庫中)完成,那麼您可以手動強制角度更新。然而,強烈建議以確保代碼是由角度處理的。你通常可以這樣做,但這取決於情況。
如果您需要強制它,然後用$scope.$apply
如下:
$scope.$apply(function() {
// Write code here to update bookmark ID's
});
這對我有用!出於某種原因,我的ngClass沒有重新評估我的scope.currentTime變種。 NG-CLASS = 「{cliptexthighlight:amHighlighted(currentTime的,clipText)}」 所以我把在:$ $範圍應用(函數(){$ = scope.currentTime currentTime的; });並強制ngclass重新評估 –
是的,如果'$ scope.currentTime = currentTime;'是在一段不被angular調用的代碼中完成的(對於我來說,這通常意味着它在一個普通的JS回調函數(如事件處理函數)),那麼UI將不會使用該範圍上的新值進行更新。那就是你必須使用'$ scope.apply',就像你做的那樣:) – alexsanford1
假設類,你要添加一個名爲「書籤」的錨標記類和isBookmarked返回一個布爾值,使用此(fiddle):
<a ng-repeat="event in events"
ng-class="{bookmarked: isBookmarked(event.id)}"
class="icon__bookmark">{{event.name}}</a>
你不應該調用$適用,如果書籤陣列控制器內,請參閱我公司提供的小提琴。
嘗試$route.reload()
。它對於只在頁面加載時才評估一次的指令(如使用JQuery進行DOM操作的類型)非常有效。
這與jquery有什麼關係? –
當書籤更新時,isBookmarked(event.id)沒有被調用。 – Chandermani
分享更多信息,控制器代碼。如果範圍內發生任何更改,則angularJs會自動調用isBookmarked。 – Anoop