vik*_*tra 93 javascript backbone.js
我有一系列按钮,点击时会在按钮下方显示一个弹出菜单.我想将按钮的位置传递给视图.我怎样才能做到这一点?
ItemView = Backbone.View.extend({
tagName: 'li',
events: {
'click': 'showMenu'
},
initialize: function() {
_.bindAll(this, 'render');
},
render: function() {
return $(this.el).html(this.model.get('name'));
},
showMenu: function() {
var itemColl = new ItemColl();
new MenuView({collection: itemColl}); // how to pass the position of menu here?
}
});
Run Code Online (Sandbox Code Playgroud)
dir*_*ira 167
您只需在构造MenuView时传递额外参数.无需添加initialize
功能.
new MenuView({
collection: itemColl,
position: this.getPosition()
})
Run Code Online (Sandbox Code Playgroud)
然后,在MenuView
,你可以使用this.options.position
.
更新:由于@mu是太短的状态,因为1.1.0,Backbone Views不再自动附加传递给构造函数的选项作为this.options,但如果你愿意,你可以自己做.
因此,在您的initialize
方法中,您可以将options
传递保存为this.options
:
initialize: function(options) {
this.options = options;
_.bindAll(this, 'render');
},
Run Code Online (Sandbox Code Playgroud)
或者使用@Brave Dave描述的更精细的方法.
mu *_*ort 46
添加options参数initialize
:
initialize: function(options) {
// Deal with default options and then look at options.pos
// ...
},
Run Code Online (Sandbox Code Playgroud)
然后在创建视图时传递一些选项:
var v = new ItemView({ pos: whatever_it_is});
Run Code Online (Sandbox Code Playgroud)
有关更多信息:http://backbonejs.org/#View-constructor
Bra*_*ave 12
从主干1.1.0开始,options
参数不再自动附加到视图(请参阅问题2458以供讨论).您现在需要手动附加每个视图的选项:
MenuView = Backbone.View.extend({
initialize: function(options) {
_.extend(this, _.pick(options, "position", ...));
}
});
new MenuView({
collection: itemColl,
position: this.getPosition(),
...
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用此迷你插件自动附加白名单选项,如下所示:
MenuView = Backbone.View.extend({
options : ["position", ...] // options.position will be copied to this.position
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85339 次 |
最近记录: |