-
[IONIC / AngularJS] 아이오닉 스크롤 위치 제어하기코딩은 주댕이로/IONIC+Firebase 2015. 5. 25. 20:22
IONIC에서는 LIST나 다른 여러 컴포넌트를 사용하면 자동으로 스크롤을 만들어주죠?
근데 이 스크롤 위치(화면위치) 를 제어하기가 쉽지 않습니다.
IONIC에서는
transform : translate3d(x,y,z); 을 사용해서 스크롤 효과를 주고있습니다.
이 css를 제어하는 것 대신 매우 손쉽게 스크롤의 위치를 제어할 수 있는 방법을
채팅기능과 관련하여 소개해드릴게요.
사용된 코드는 이렇습니다.
chat.html
app.js (controller를 그냥 app.js에 선언해놓았어요.)
1. ng-repeat으로 채팅의 메시지를 전부 띄운 상황입니다.
당연히 html문서의 최상단을 보여주고 있는데요.
2. 하지만 제가 원하는 초기 화면은 이런 화면이겠죠?
채팅 페이지이니 만큼
해당 html문서의 최하단을 보여주어서 최근메시지가 가장 먼저 보이도록 해주어야 하겠습니다..
3. Controller에서 scrollBottom을 실행시키겠습니다.
여기가 핵심
controller에 $ionicScrollDelegate 를 추가해주었구요,
ng-repeat이 끝나면 $ionicScrollDelegate.scrollBottom을 실행하도록 했습니다.
4. 그리고 ng-repeat을 선언한 태그에 ng-repeat-watch-end (이전 글 참조)를 실행해줍니다.
2번째줄에 ng-repeat-end-watch="setScrollPos" 만 넣어준 상황입니다.
완성입니다!!
***
1. document.scrollTop 같은 순수 js코드로도 제어가 가능할텐데요.
scroll 때문에 쉽지 않아서 이렇게 구글링을 통해 찾았습니다.
2. transform css요소를 바꾸는걸로도 해보았는데.. 이역시 스크롤과 동시제어가 거의 힘들어요
3 올린 코드에는 가독성때문에 생략한 코드가 많이 있습니다. 참조만 해주세요.
'코딩은 주댕이로 > IONIC+Firebase' 카테고리의 다른 글
[Firebase, Ionic] 페이스북으로 로그인하기 1탄 (친절주의) (Login with Facebook) (2) 2015.08.13 [Firebase 3편] AngularJS로 실시간 채팅&공유 웹/앱을 만들고 싶다면? (5) 2015.08.09 [Firebase 2편] AngularJS로 실시간 채팅&공유 웹/앱을 만들고 싶다면? (17) 2015.06.15 [Firebase 1편] AngularJS로 실시간 채팅&공유 웹/앱을 만들고 싶다면? (0) 2015.06.08 [IONIC / AngularJS] Ionic에서 ng-repeat이 끝났을 때 이벤트/메소드 실행하기 (4) 2015.05.25