子视图中的Backbone.JS自定义事件

时间:2011-07-20 02:13:52

标签: javascript backbone.js

我有两个观点,为简单起见,父母/子女。孩子正在使用触发器来举办活动。我没有在父母的处理程序中看到它。以下是否有效?

var parent = Backbone.View.extend({
    events: { "childevent": "run" },
    run: function(e) {
       console.log(e);
    }, 
    render: function() { /* render the child here */ }
});

var child = Backbone.View.extend({
    someAction: function() { this.trigger('childevent'); }
});

4 个答案:

答案 0 :(得分:18)

想出来! $(this.el).trigger('childevent');有效。

答案 1 :(得分:2)

不应该是events: { "childevent": "run" }吗?无法在代码中访问此处的实际匿名函数。

答案 2 :(得分:2)

Backbone存储对this.$el属性中视图节点的jQuery引用,因此您可以使用它来节省一些性能,而不是通过$(this.el)重新计算引用。

// use "this.$el.trigger()" to refer to jQuery's object
this.$el.trigger('childevent');

答案 3 :(得分:1)

显然很晚,但对于遇到此事的其他人来说:

视图上的events属性用于从视图el或$ el元素中的组件自动绑定Html DOM事件,语法涉及UI事件和选择器作为对中的键:

事件:{“点击#someButton”,“clickHandler”}

要收听其他模特或视图中的事件,请使用this.listenTo(target,.....)