| 123456789101112131415161718192021222324252627282930313233343536 |
- define [
- "base"
- ], (App) ->
- App.directive "updateScrollBottomOn", ($timeout) ->
- return {
- restrict: "A"
- link: (scope, element, attrs, ctrls) ->
- # We keep the offset from the bottom fixed whenever the event fires
- #
- # ^ | ^
- # | | | scrollTop
- # | | v
- # | |-----------
- # | | ^
- # | | |
- # | | | clientHeight (viewable area)
- # | | |
- # | | |
- # | | v
- # | |-----------
- # | | ^
- # | | | scrollBottom
- # v | v
- # \
- # scrollHeight
-
- scrollBottom = 0
- element.on "scroll", (e) ->
- scrollBottom = element[0].scrollHeight - element[0].scrollTop - element[0].clientHeight
-
- scope.$on attrs.updateScrollBottomOn, () ->
- $timeout () ->
- element.scrollTop(element[0].scrollHeight - element[0].clientHeight - scrollBottom)
- , 0
- }
|