我下面thinksters角NFL幻想教程這裏http://www.thinkster.io/angularjs/eHPCs7s87O/angularjs-tutorial-learn-to-rapidly-build-real-time-web-apps-with-firebase他們實現納克級的活躍在這種方式...角試圖理解方法,以檢查是否元素isActive
<li data-ng-repeat="entry in navbarEntries" data-ng-show="auth" data-ng-class="{ active: entry.isActive }">
$scope.$on('$routeChangeSuccess', function() {
$scope.navbarEntries.forEach(
function(data) {
data.isActive = ($location.path().indexOf(data.link) == 0);
}
)
})
他們有這樣的解釋下面的執行...
「爲什麼,你可能會問,難道你不只是調用從視圖的方法,如果它應該是主動或不這將評估?
原因是$摘要循環再評估,這個循環發生得非常非常通常情況下,您在視圖中用於評估屬性的每個方法調用都將在每個週期重新調用,這顯然會隨着應用程序的擴展而降低性能。「
我想知道它會看起來像「從視圖調用方法」,什麼「評估屬性」的意思,並希望多一點的解釋在什麼情況下使用這樣的避免$消化週期重新評估在角度上是適當的。
你能解釋頁面渲染示例多一點嗎?我猜$ $ routeChangeSuccess會被觸發,並且該函數將被評估,對吧?那麼如何在模板中調用它更有效率呢{active:urlIsActive('/ home /')} – natecraft1
這個例子中的差異可能不會很明顯,因爲'urlIsActive'就是一個很小的例子。但是,將函數調用的次數儘可能少(但不要低)是個好主意。 我們知道'urlIsActive'的結果在路由更改之間是相同的。只要路由發生變化,即值可能改變,事件'$ routeChangeSuccess'就會被觸發。從模板中調用它會導致在所有摘要循環中評估函數(經常發生!),這是浪費的。僅從事件調用允許Angular只檢查一些變量值。 – Mikke