Javascript 如何从view1访问对象/变量,但在主干js的view2中实例化?
我正在尝试访问在视图(StatusView)的渲染函数中声明的对象(this.historyComboBox),并尝试从另一个视图(HistoryView)的extendedEvents函数中访问同一对象。 我试图使用this.historyComboBox访问它,但无法保存任何引用。我真的很困惑。如果有人有不同的想法,我准备尝试一下 注意:StatusView在HistoryView之前初始化 下面是代码片段Javascript 如何从view1访问对象/变量,但在主干js的view2中实例化?,javascript,jquery,html,backbone.js,Javascript,Jquery,Html,Backbone.js,我正在尝试访问在视图(StatusView)的渲染函数中声明的对象(this.historyComboBox),并尝试从另一个视图(HistoryView)的extendedEvents函数中访问同一对象。 我试图使用this.historyComboBox访问它,但无法保存任何引用。我真的很困惑。如果有人有不同的想法,我准备尝试一下 注意:StatusView在HistoryView之前初始化 下面是代码片段 StatusView = Backbone.View.extend({ in
StatusView = Backbone.View.extend({
init: function() {
//some code
},
render: function() {
this.historyComoBox = new sys.ComboBox();
}
}
HistoryView = Backbone.View.extend({
template: _.template(historyTemplate),
init: function() {
//some code
},
extendedEvents: {
'click #refreshButton': function() {
//want to access historyComoBox; not accessible with 'this.historyComoBox'
}
}
}
要获取
StatusView
实例的属性,需要引用该实例。所以,如果你有这样的东西:
var statusView = new StatusView();
然后从HistoryView
的方法中,可以执行以下操作:
statusView.historyComboBox;
但是,虽然您可以这样做,但我不会像这样直接访问StatusView
实例。更好的方法是将其作为参数传递给HistoryView
实例,您将在initialize
方法中收到该参数。这使视图保持松散耦合
var HistoryView = Backbone.View.extend({
initialize: function (options) {
this.statusView = options.statusView;
},
events: {
'click #refreshButton': function () {
// use this.statusView;
}
}
});
(我注意到您使用的名称是
init
和extendedEvents
。您没有提到您使用的是带有主干的第三方库或其他可能会改变这些名称的内容,因此我只提到主干希望这些名称分别是初始化
和事件
)historyComoBox
是状态视图的属性。但是您还没有实例化任何状态视图对象(至少在代码段中)。因此,没有任何historyComoBox
可访问。