2013-09-24 4 views
0

http://johnpolacek.github.io/superscrollorama/과 같은 플러그인을 내 Views에 통합하여 Backbone.js와 함께 사용하는 방법을 이해하려고합니다. 백본 View-Events에 연결해야한다는 것을 알고 있지만 플러그인으로 수평 스크롤을 수행하고 싶습니다. 수평 스크롤 이벤트에 대해 알지 못합니다. 어떻게 플러그인을 계속 사용할 수 있습니까? 어떤 아이디어라도 미리 감사드립니다.Backbone.js에서 SuperScrolloRama를 사용하는 방법보기

조회수 :

var ArtistsView = Backbone.View.extend({ 
    tagName: 'ul', 
    initialize: function() {  
     this.cleanUp(); 
     $("body").attr('id','artists'); 
     this.render(); 
    }, 


    events: { 
     "click div.open" : "largeArtViewOpen", 
     "click div.close" : "largeArtViewClose", 
    }, 

    render: function() { 
     this.collection.each(function(model) { 
      var artistView = new ArtistView({ model: model }); 
      this.$el.append(artistView.render().el); 

     }, this); 
     console.log('and a new view was rendered!') 
     return this; 


    }, 

    cleanUp: function(){ 
     if (this != null) { 
      this.remove(); 
      this.unbind(); 
      console.log('View was removed!'); 
     } 
    }, 

    largeArtViewOpen: function(e){ 
     var thisArt = $(e.currentTarget).parent().attr("class"); 
      console.log(thisArt); 
      $("#open-view, li."+thisArt).show(); 
     }, 

    largeArtViewClose: function(e){ 
     //var thisArt = $(e.currentTarget).parent().attr("class"); 

     console.log('clicked!'); 
     $("#open-view, ul#large li").hide(); 

     }, 

    scrollFx: function(){ 

      var controller = $.superscrollorama({ 
       isVertical:false 
      }); 

      controller.addTween('h2#fade-it', TweenMax.from($('h2#fade-it'), .5, {css:{opacity: 0}}), 800); 
      //$('h2#fade-it').css({'color':'#dbdbdb'}); 
      console.log('scroll message!'); 

    }, 

}); 

var ArtistView = Backbone.View.extend({ 
    tagName:'li', 
    className:'artistLink not-active', 

    render: function(){ 
     this.id = this.model.get('idWord')+"-menu-item"; 
     this.$el.attr('id', this.id).html(this.template(this.model.toJSON())); 
     return this; 

    }, 

}); 

답변

0

그래서, 나는이 질문을 한 이후 최근 3 일, 나는 대 ... 창 대 문서를 다른 스크롤 '목표'를 시도 Superscrollorama 약간의 시간을 보냈어요 HTML 내에서 본문 대 다른 DOM 요소와 내가 고려해야 만했던 질문은 스크롤 이벤트를 View의 맨 위 요소에 바인딩해야합니까? 그것은 본문에 바인딩되어야하지만보기에서 초기화해야합니까? 두 경우 모두 시도해 보니 연속적으로 발생하는 스크롤 이벤트를 얻을 수 없었습니다. 이는 잘못된 코드로 인한 것일 수 있지만 발생하지는 않습니다.

내가보기에 전적으로보기를 피했다. 즉, 별도의 'helper.js'문서에서 scrollFx()라는 함수에서 Superscrollorama를 인스턴스화하고 호출 한 다음 내 뷰의 라우터에서 scrollFx()를 호출했다. .

Superscrollorama 함수를 호출하여 결과 스크롤 스타일/애니메이션이 정리되고 이벤트가 정리되지 않도록하기 전에 대상의 스타일을 비우고 scrollFx() 시작 부분에 기존 스크롤 이벤트를 바인딩 해제한다고 생각합니다. 기하 급수적으로 바운드.

스크롤 이벤트가 작동하고 있어도 여전히 이러한 문제를 해결하기 위해 노력하고 있습니다. 따라서 누군가가이 생각의 열차를 읽는다면, 두 가지 감각을 추가 할 수 있습니다. 뷰 내부에서 Superscrollorama 함수를 다시 구현하는 방법에 대해 설명합니다.

감사합니다.