首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Marionette.CompositeView,如何向Marionette.ItemView传递参数

Marionette.CompositeView,如何向Marionette.ItemView传递参数
EN

Stack Overflow用户
提问于 2012-06-30 17:42:27
回答 2查看 15.7K关注 0票数 21

我想从Marionette.ItemView访问app.vent。

也许可以选择从Marionette.CompositeViewMarionette.ItemView传递一个参数(app.vent)。

下面是我的代码:

代码语言:javascript
复制
// view/compositeView.js
define([
    'marionette',
    'views/item'
], function (Marionette, itemView) {
    var ListView = Marionette.CompositeView.extend({ 
        itemView: itemView
    });
});

有什么想法吗?

附言:

我无法从itemView访问该应用程序,因为存在循环依赖问题。

代码语言:javascript
复制
app -> view/compositeView -> view/itemView
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-01 00:09:23

v0.9添加了一个可用于此目的的itemOptions属性。它既可以是对象文字,也可以是返回对象文字的函数。

代码语言:javascript
复制
Backbone.Marionette.CompositeView.extend({
  itemView: MyItemViewType,

  itemViewOptions: {
    some: "option",
    goes: "here"
  }

});

此属性返回的所有key: "value"对都将提供给初始化程序中的项视图的选项

代码语言:javascript
复制
Backbone.Marionette.ItemView.extend({
  initialize: function(options){
    options.some; //=> "option"
    options.goes; //=> "here"
  }
});

此外,如果需要为生成的每个itemView实例运行特定代码,则可以重写buildItemView方法,以便为集合中的每个对象提供项视图的自定义创建。

代码语言:javascript
复制
  buildItemView: function(item, ItemView){

    // do custom stuff here

    var view = new ItemView({
      model: item,
      // add your own options here

    });

    // more custom code working off the view instance

    return view;
  },

有关详细信息,请参阅:

是从CompositeView扩展而来的,因此对于作为CollectionView的CompositeView,所有CollectionView文档都是有效的

票数 29
EN

Stack Overflow用户

发布于 2015-04-02 07:40:40

从Marionette v2.0.0开始,使用childViewOptions而不是itemViewOptions将参数传递给子视图:

代码语言:javascript
复制
var MyCompositeView = Marionette.CompositeView.extend({
  childView: MyChildView,
  childViewOptions: function(model, index) {
    return {
      vent: this.options.vent
    }
  }
});

var MyChildView = Marionette.ItemView.extend({
  initialize: function(options) {
      // var events = options.vent;
  }
});

new MyCompositeView({ vent: app.vent, collection: myCollection});

但是为了处理事件,让我们使用Marionette.Radio而不是将app.vent传递给视图。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11273115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档