2012-08-09 104 views
9

我知道我可以覆蓋所有區域以通過使用以下添加淡入淡出過渡。Backbone.Marionette Fade僅適用於特定區域?

Marionette.Region.prototype.open = function(view){ 
    this.$el.hide(); 
    this.$el.html(view.el); 
    this.$el.fadeIn() 
} 

有沒有辦法只覆蓋特定區域或視圖?我的佈局中有一些區域可以淡入,而其他區域應該立即渲染。

感謝,

DK

回答

16

您可以自定義一個Region你可以定義任何骨幹對象的方式,而這種代碼添加到區域類型。


MyRegion = Backbone.Marionette.Region.extend({ 

    el: "#some-element", 

    open: function(view){ 
    this.$el.hide(); 
    this.$el.html(view.el); 
    this.$el.fadeIn(); 
    } 

}); 

MyApp.addRegions({ 
    myRegion: MyRegion 
}); 

請注意,我在區域定義中包含el。如果你想在多個地區重複使用它,你必須創建一個基礎區域,並根據需要擴展它。


FadeInRegion = Backbone.Marionette.Region.extend({ 

    open: function(view){ 
    this.$el.hide(); 
    this.$el.html(view.el); 
    this.$el.fadeIn(); 
    } 

}); 

MyApp.addRegions({ 
    myRegion: FadeInRegion.extend({el: "#some-element"}), 
    anotherRegion: FadeInRegion.extend({el: "#another-element"}) 
}); 
+0

謝謝,德里克並感謝您創建的木偶。 – dkleehammer 2012-08-09 22:03:36

+0

感謝Derick的提示。我無法獲得代碼片段的工作,但我補充說... Backbone.Marionette.Region.prototype.open.call(this,view,appendMethod); ...到FadeInRegion開放方法的底部,這一切都很好。 – 2012-09-14 15:14:08

+0

對於那些試圖讓第二個代碼片段工作,嘗試將第二個片段更改爲:var FadeInRegion = Backbone.Marionette.Region.extend({ – krhorst 2013-05-03 15:23:00

-1

,我只是使用的另一種選擇是覆寫動畫open方法是創建一個單獨的配置文件,覆蓋在配置文件中的打開方法,和條件邏輯測試對於類名。所以這就是我對咖啡腳本和使用Marionette模塊所做的。

創建我的觀點:

@Item.module "ItemApp.Add", (Add, App, Backbone, Marionette, $,_) -> 

    class Add.Item extends Marionette.ItemView 

     template: "#add-item" 
     className: "add-modal" 

而在我的配置文件我只是測試的類名來執行所需的動畫:

do (Marionette) -> 
    _.extend Marionette.Region::, 
     open: (view) -> 
      if view.el.className == "add-modal" 
       console.log "the add-modal has been called" 
       @$el.hide() 
       @$el.html(view.el) 
       @$el.show().animate "left": '0', queue: false