당신이, 당신이 먼저 을보기를로드하거나 defenately 우리의 응용 프로그램에서 나중에
을 iscroll 새로 올바른 가지고, 우리는 일반적으로보기 를 렌더링하는 방법 렌더링 사용의 초기화를 처리하는 postRender 방법을 당신은 몇 가지 수동 작업이 필요
물론
iscroll 등이 추가 플러그인은 끝내야하지만이 그것의 요점입니다 : 지금
var myView = Backbone.View.extend({
// more functions go here, like initialize and stuff... but I left them out because only render & postRender are important for this topic
// lets say we have a render method like this:
render: function() {
var data = this.collection.toJSON();
this.$el.html(Handlebars.templates['spotlightCarousel.tmpl'](data));
return this;
},
// we added the postRender ourself:
postRender: function() {
var noOfSlides = this.collection.size();
$('#carouselscroller').width(noOfSlides * 320);
this.scroller = new IScroll('carouselwrapper', {
snap: true,
momentum: false,
hScrollbar: false
});
}
});
호출의 이러한 방법 우리는 우리의보기 외부 이것은 우리는 몇 가지보기 관리자가이 을 처리하고자 않았다으로하지만 내용이로드되기 전에 당신이보기에 iScroll을 초기화 할 수 없습니다이
var col = new myCollection();
var view = new myView({ collection: col });
$('#wrapper').html(view.render().$el); // this chaining is only possible due to the render function returning the whole view again.
// here we always test if the view has a postRender function... if so, we call it
if (view.postRender) {
view.postRender();
}
아래로 비등? 실수가 아니라면 iScroll이 부모 요소에 연결되어 추가 된 모든 데이터가 스크롤됩니다. – Jlange
그럴 때 목록이 약간 움직이지만 스크롤하지는 않는 이상한 "고무 밴드"효과를 얻습니다. 라이브러리가 요소의 높이를 알고 있으므로 먼저로드해야한다고 생각합니다. 그 중 하나, 또는보기에서 iScroll을 제대로 초기화하지 않았습니다. 나는 그것을하는 방법에 대한 온라인 예제를 찾을 수 없었다. – user1265102
나는 본다. iScroll 문서를 읽은 후 초기화시 너비와 높이를 모두 설정해야하는 것처럼 보입니다. 당신이 저에게 묻는다면 그 종류가 전체 플러그인을 덜 유용하게 만듭니다. Sander의 솔루션이 유일한 방법 인 것처럼 보입니다 (보기가로드 될 때 콜백을 설정 한 다음 iScroll을 초기화하는 방법). – Jlange