2014-05-22 91 views
0

我有一個具有itemView的compositeView。我通過options對象將值傳入實例化的compositeview中。在compositeView中,我將itemview屬性設置爲itemview,我使用itemViewOptions屬性嘗試傳入傳入組合視圖的選項中的值。下面是我的代碼有:將compositeView選項傳遞給itemView

CompositeView中:

myFirstCompositeView = Marionette.CompositeView.extend({ 
    template: Handlebars.templates["myTemp"], 

initialize: function(options){ 
    //this console statement works as expected options are there 
     console.log("myFirstCompositeView.initialize() -> options -> ", options); 
    this.eventBus = options.eventBus; 
    this.mapModel = options.myModel;    
    //i tried this 
     this.itemView : myFirstItemView; 
     this.itemViewOptions = this.myModel; 
    }, 
    i also tried this... 
    itemView : myFirstItemView 
    itemViewOptions = this.myModel; 
}); 

ItemView控件:

myFirstItemView = SegmentItemView = Marionette.ItemView.extend({ 
    template: Handlebars.templates["myothertemp"], 
    initialize : function(options){ 
    //value undefined 
     console.log("myFirstItemView .initialize() -> ", options.myModel); 
}, 

}); 

CompositeView中的實例化:

new myFirstCompositeView ({ 
    myModel : {testval : 777, teststr: "holy cow"}, 
    collection: model.get("myFirstCollection"), 
    eventBus: eventBus 
})); 

反正是有值傳遞到ItemView控件?

回答

1

試試這個:

myFirstCompositeView = Marionette.CompositeView.extend({ 
    template: Handlebars.templates["myTemp"], 
    initialize: function(options){ 
     this.eventBus = options.eventBus; 
     this.mapModel = options.myModel;    
    }, 
    itemView : myFirstItemView, 
    itemViewOptions: function(){ 
     return { 
      myModel: this.myModel 
     }; 
    } 
}); 

From the Marionette documentation:

您也可以指定itemViewOptions的功能,如果你需要 計算值在運行時返回。在計算 itemViewOptions時,該模型將通過 轉換爲您需要訪問它的功能。該函數必須返回一個對象,並且該對象的屬性將被複制到itemView實例的 選項中。