Javascript AngularJS$watch变量和重新评估ng类表达式
我正在尝试在我的应用程序中实现一个类似书签的函数,并且必须观察一个变量,该变量存储所有书签ID。基于该变量,我必须告诉Javascript AngularJS$watch变量和重新评估ng类表达式,javascript,angularjs,angularjs-directive,ng-class,Javascript,Angularjs,Angularjs Directive,Ng Class,我正在尝试在我的应用程序中实现一个类似书签的函数,并且必须观察一个变量,该变量存储所有书签ID。基于该变量,我必须告诉ng class重新评估它的函数表达式,以便添加或不添加已添加书签的类get 当变量$scope.Bookmarks发生更改时,如何告诉ng class再次运行 <a ng-repeat="event in events" ng-class="isBookmarked(event.id)" class="icon__bookmark"></a>
ng class
重新评估它的函数表达式,以便添加或不添加已添加书签的类get
当变量$scope.Bookmarks
发生更改时,如何告诉ng class
再次运行
<a ng-repeat="event in events"
ng-class="isBookmarked(event.id)"
class="icon__bookmark"></a>
如果在angular处理的代码中更改了书签ID(例如控制器、指令、服务、$http回调等),那么您根本不需要做任何事情。Angular将在需要时自动重新计算isBookmarked(event.id)
,以确保UI始终是最新的
如果出于某种原因,更新必须在angular处理的代码之外完成(例如在外部库中),则可以手动强制angular进行更新。但是,强烈建议只确保代码由angular处理。你通常可以这样做,但这要视情况而定
如果需要强制执行,请按如下方式使用$scope.$apply
:
$scope.$apply(function() {
// Write code here to update bookmark ID's
});
假设要将名为“bookmarked”的类添加到锚标记中,并且isBookmarked返回一个布尔值,请使用以下()命令:
{{event.name}
如果书签数组位于控制器内,则不必调用$apply,请参阅我提供的小提琴。尝试$route.reload()
。它适用于在加载页面时只计算一次的指令(如使用JQuery进行DOM操作的类型)。这与JQuery有何关系?是否在更新书签时不会调用isBookmarked(event.id)。共享更多信息,控制器代码。angularJs会在范围发生任何变化时自动调用isBookmarked。这对我很有用!出于某种原因,我的ngClass没有重新评估我的scope.currentTime变量。ng class=“{cliptexthighlight:amHighlighted(currentTime,clipText)}”,所以我加入了:$scope.$apply(函数(){$scope.currentTime=currentTime;});如果$scope.currentTime=currentTime,这就迫使ngclass重新计算Yes
是在angular没有调用的代码段中完成的(对我来说,这通常意味着它是在常规JS回调函数(如事件处理程序)中完成的),那么UI将不会用作用域上的新值更新。这时您必须使用$scope.apply
,正如您所做的:)
<a ng-repeat="event in events"
ng-class="{bookmarked: isBookmarked(event.id)}"
class="icon__bookmark">{{event.name}}</a>