如何正确获取活动Backbone视图?

时间:2014-12-11 19:16:49

标签: backbone.js backbone-views

我的Backbone视图包含子视图,每个视图都可以保持“活动”状态(仅clickcontextmenu)。我需要从父视图获取对该活动子视图的视图引用。这样做的正确方法是什么?

我的视图层次结构如下所示:

var OuterView = Backbone.View.extend({
    initialize: function() {
        this.children = {};
        this.child = new Backbone.View();
        this.children[this.child.cid] = this.child;
    },

    render: function() {
        this.$el.html('<div data-view-cid="' + this.child.cid + '"></div>');
        _.each(this.children, function(view, cid) {
            this.$('[data-view-cid="' + cid + '"]').replaceWith(view.el);
        }, this);
    }
};

2 个答案:

答案 0 :(得分:4)

我更喜欢的方法不是拥有活动和非活动视图,而是仅渲染活动视图,并在不需要时删除它们。

换句话说,处理状态的最简单方法是使事情无状态。

答案 1 :(得分:0)

最简单的解决方案是委托父视图来聆听&#39;点击div&#39;并在回调中通过$(event.currentTarget).closest('[data-view-cid]')

获取子视图

子视图不应该知道父视图以避免创建僵尸,否则你可能不得不清理引用。