如何创建骨干观点与动态创建的“厄尔尼诺”?(How do you create Backbone v

2019-07-28 22:56发布

我有两个观点 - 一个OverlayView的和StoryView。 该StoryView需要得到追加到OverlayView的(两者都是动态创建的)。 我动态创建#overlay格在OverlayView的,但是当我设置了StoryView的“厄尔尼诺”到#overlay,这个。$ StoryView的EL是一个空数组。 该#overlay DIV肯定在DOM通过创建StoryView的时间存在。

我怎么认识创建#overlay为“厄尔尼诺”的dyanmically的StoryView? 我在假设“厄尔尼诺”应该是“父”容器视图所附加正确的吗? 如若该OverlayView的的“厄尔尼诺”实际上是“#overlay”?

OverlayView的:

OverlayView = Backbone.View.extend({
    el: $('body'),

    events: {
        'click #film': 'hideOverlay'
    },

    initialize: function() {
        this.render();
    },

    render: function() {
        this.$el.append('<div id="overlay"></div>');
        return this;
    }
});

StoryView:

var StoryView = Backbone.View.extend({
    el: $('#overlay'),

    events: {
        'click .close': 'closeStory'
    },

    initialize: function() {
        this.render();
    },

    render: function() {
        console.log(this.$el); // Returns empty array []
        return this;
    }
});

Answer 1:

你的问题是,你的StoryView el应该仅仅是一个选择-而不是一个jQuery对象。 这将导致骨干为尝试检索在您指定的时间目标(这还不存在) el 。 只要改变el: $('#overlay')el: '#overlay' 你也可以做同样的$('body')在你的第一个观点,因为它是没有必要的。 只要始终使用选择,而不是jQuery对象和你会被罚款。

工作实例这里 。



文章来源: How do you create Backbone views with an 'el' that was dynamically created?