2013-05-04 72 views
0

我有一個集合,其中包含表示應用程序導航項目的模型。在我的應用程序中,導航位於屏幕的左側,我希望能夠在渲染時逐個滑動導航項目。導航容器是一個集合視圖,導航項是它的項目視圖。將呈現爲Marionette集合視圖的項目動畫化爲

在集合視圖中,我已將appendHtml方法更改爲如下所示。

appendHtml: function (collectionView, itemView, index) { 
      console.log('APPENDING ITEM VIEW', itemView.el); 
      itemView.assignNewlyCreated(); 
      collectionView.$el.append(itemView.el); 
      itemView.slideIn(); 
    }, 

的項目查看有這些相關的方法:

// Label the dom element as newly created 
    assignNewlyCreated: function() { 
     this.$el.addClass('newly-created'); 
    }, 

    // Slide in the item. 
    slideIn: function() { 
     console.log('sliding in element', this.el); 
     this.$el.animate({left: 0}); 
    } 

由於新創建類有推項目關閉屏幕左側的風格,我在想,如果我追加它是這樣的,然後一旦它在DOM中滑動它,它應該工作。不幸的是,這不起作用,導航項目已經出現在屏幕上,沒有動畫。我在這裏做錯了什麼,有沒有人知道爲什麼這似乎不工作?我在想我的應用程序的另一部分可能存在錯誤,但是如果是這種情況,並且如果這是固定的,上面的代碼應該工作嗎?

回答

0

也許嘗試這樣的事:

MyItemView = Backbone.Marionette.extend({ 
    template: "#template", 
    className: "newly-created", 
    onRender: function(){ 
    this.$el.animate({left: 0}); 
    } 
}); 

這將直接對項目的類,然後滑動時,它是由的CollectionView呈現的項目視圖(OnRender將被自動調用科幻它的定義,有沒有別的事要你做)。

+1

但最初當呈現集合視圖時,它不會附加到dom,所以他不會看到過渡效果。只有當稍後在集合上觸發添加事件(即將集合視圖附加到dom後)時,可以看到這個轉變 – deven98602 2013-05-06 09:32:11