如何将参数传递到视图

我有一系列按钮,点击后会显示一个位于按钮下方的弹出菜单。我想将按钮的位置传递给视图。我怎样才能做到这一点?如何将参数传递到视图

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

回到顶部