如何从view1访问对象/ var但在Backbone js中的view2中实例化?

时间:2015-06-19 12:14:23

标签: javascript jquery html backbone.js

我正在尝试访问在视图( StatusView )的呈现函数中声明的对象( this.historyComboBox )并尝试从另一个视图( HistoryView )的 extendedEvents 函数访问同一个对象。 我曾尝试使用 this.historyComboBox 来访问它但无法保存任何引用。真的很困惑。如果有人有不同的想法,我准备尝试一下!

注意:StatusView在HistoryView之前初始化。

以下是代码段。

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'
        }
    }               
}

1 个答案:

答案 0 :(得分:1)

要获取android.support.v4.app实例的属性,您需要对该实例的引用。所以,如果你有这样的事情:

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。您没有提到您使用的是带有Backbone的第三方库或其他可能会改变这些的库,所以我只想提一下,Backbone希望它们分别是extendedEventsinitialize。)