javascript - 单击 subview 时 Backbone.js 执行函数

标签 javascript jquery backbone.js

我有一个名为 DatesView 的 View 和一个名为 DateView 的 subview 。我想在单击 DateView 实例时在 DatesView 中执行一个函数。

var Date = Backbone.Model.extend({});

var Dates = Backbone.Collection.extend({
    model: Date
});

var DateView = Backbone.View.extend({
    events: {
        'click': 'clicked'
    },

    render: function () {
        this.$el.text(this.model.get('date'));

        return this;
    }
})

var DatesView = Backbone.View.extend({
    render: function () {
        this.collection.each(function (date) {
            var dateView = new DateView({model: date});

            this.$el.append(dateView.render().el)
        }, this);

        return this;
    },

    clicked: function() {
        console.log('clicked');
    }
})

var dates = new Dates([
    {date: '01'},
    {date: '02'},
    {date: '03'}
])

var datesView = new DatesView({collection: dates});

$('#container').html(datesView.render().el);

JSFiddle

正如您在示例中看到的,DateView 有一个单击事件设置,我想在 DatesView 中注册该事件。现在这样写不行。

最佳答案

我非常喜欢使用 Backbone 事件。您可以按如下方式使用它:

在 DateView 中触发事件

clicked: function () {
    Backbone.trigger('date:clicked');
}

在 DatesView 中监听事件

initialize: function () {
    this.listenTo(Backbone, 'date:clicked', this.clicked);    
}

关于javascript - 单击 subview 时 Backbone.js 执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544956/

相关文章:

javascript - 单击时jquery改变颜色

javascript - BackboneJS 重置模型

ruby-on-rails - Backbone想要包含created_at、updated_at等,但我不希望它包含

javascript - 调整可见性时 div 元素闪烁

javascript - 如何在 jquery UI 中为内联日期选择器设置日期?

jquery - 获取上一个标签的id

backbone.js - Backbone.Marionette CollectionView 模板 'undefined'

javascript - 用户认证查询

javascript - 如何在主干 View 中使用窗口 onunload 事件

javascript - 如何从 HTML5 颜色选择器获取值