如何将参数传递到视图
我有一系列按钮,点击后会显示一个位于按钮下方的弹出菜单。我想将按钮的位置传递给视图。我怎样才能做到这一点?如何将参数传递到视图
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?
}
});
回答:
你只需要在构造Menu时传递额外的参数视图。无需添加initialize
功能。
new MenuView({ collection: itemColl,
position: this.getPosition()
})
,然后在MenuView
,您可以使用this.options.position
。
UPDATE:
initialize: function(options) { this.options = options;
_.bindAll(this, 'render');
},
,或者使用一些更精细的方式为described by @Brave Dave:作为@mu is too short states,因为1.1.0,Backbone Views no longer automatically attach options passed to the constructor as this.options, but you can do it yourself if you prefer.
因此,在你initialize
方法,可以将options
通过为this.options
保存。
回答:
添加选项参数initialize
:
initialize: function(options) { // Deal with default options and then look at options.pos
// ...
},
再经过一些选项,当您创建视图:
var v = new ItemView({ pos: whatever_it_is});
欲了解更多信息:http://backbonejs.org/#View-constructor
回答:
通从其他位置
new MenuView({ collection: itemColl,
position: this.getPosition()
})
添加选项参数鉴于初始化您获得的是传递的变量,
initialize: function(options) { // Deal with default options and then look at options.pos
// ...
},
获得价值 使用 -
var v = new ItemView({ pos: this.options.positions});
回答:
自骨干网1.1.0起,options
参数为no longer attached自动转到该视图(请参阅issue 2458进行讨论)。现在,您需要手动附加每个视图选项:
MenuView = Backbone.View.extend({ initialize: function(options) {
_.extend(this, _.pick(options, "position", ...));
}
});
new MenuView({
collection: itemColl,
position: this.getPosition(),
...
});
或者您可以使用this mini plugin来自动连接白名单选项,就像这样:
MenuView = Backbone.View.extend({ options : ["position", ...] // options.position will be copied to this.position
});
回答:
使用this.options到鉴于
// Place holder <div class="contentName"></div>
var showNameView = Backbone.View.extend({
el:'.contentName',
initialize: function(){
// Get name value by this.options.name
this.render(this.options.name);
},
render: function(name){
$('.contentName').html(name);
}
});
$(document).ready(function(){
// Passing name as argument to view
var myName1 = new showNameView({name: 'Nishant'});
});
工作实施例检索argumentr:http://jsfiddle.net/Cpn3g/1771/
以上是 如何将参数传递到视图 的全部内容, 来源链接: utcz.com/qa/261369.html