Lor*_*ard 21 javascript backbone.js marionette
我想从Marionette.ItemView访问app.vent.
也许一个选项可能是将参数(app.vent
)传递Marionette.ItemView
给Marionette.CompositeView
.
这是我的代码:
// view/compositeView.js
define([
'marionette',
'views/item'
], function (Marionette, itemView) {
var ListView = Marionette.CompositeView.extend({
itemView: itemView
});
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
PS:
我无法从itemView访问应用程序,因为存在循环依赖性问题.
app -> view/compositeView -> view/itemView
Run Code Online (Sandbox Code Playgroud)
Der*_*ley 29
v0.9添加了一个itemOptions
可用于此的属性.它可以是对象文字或返回对象文字的函数.
Backbone.Marionette.CompositeView.extend({
itemView: MyItemViewType,
itemViewOptions: {
some: "option",
goes: "here"
}
});
Run Code Online (Sandbox Code Playgroud)
key: "value"
此属性返回的所有对都将提供给初始化程序中的itemview选项
Backbone.Marionette.ItemView.extend({
initialize: function(options){
options.some; //=> "option"
options.goes; //=> "here"
}
});
Run Code Online (Sandbox Code Playgroud)
此外,如果需要为构建的每个itemView实例运行特定代码,则可以覆盖该buildItemView
方法,以便为集合中的每个对象提供项目视图的自定义创建.
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;
},
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅:
Die*_*goG 13
由于木偶V2.0.0,childViewOptions代替itemViewOptions将参数传递给该子视图:
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});
Run Code Online (Sandbox Code Playgroud)
但是要使用事件,让我们使用Marionette.Radio而不是将app.vent传递给视图.
归档时间: |
|
查看次数: |
15302 次 |
最近记录: |