首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backbone -视图事件对象中的自定义事件

Backbone -视图事件对象中的自定义事件
EN

Stack Overflow用户
提问于 2012-06-25 19:50:28
回答 2查看 6.7K关注 0票数 1

我正在试图弄清楚为什么这样做是可行的:

代码语言:javascript
复制
var TestView = Backbone.View.extend({
    views: {},

    initialize: function(){
        this.bind('transistion:complete', this.onPageLoaded);

    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.trigger('transition:complete');

但这是行不通的:

代码语言:javascript
复制
var TestView = Backbone.View.extend({
    views: {},

    events:{
        'transition:complete': 'onPageLoaded'
    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.trigger('transition:complete');

能够从视图的events对象中触发我的自定义事件会更简洁。有没有什么办法可以让它起作用呢?

EN

回答 2

Stack Overflow用户

发布于 2012-06-25 20:15:14

events散列是为DOM事件(如单击)指定的,而通过trigger触发并通过on绑定的事件是Backbone的内部事件。因此,当您转到v.trigger('eventname')时,该事件不是DOM事件,而是特定于Backbone的。

阅读更多here

票数 8
EN

Stack Overflow用户

发布于 2012-08-28 22:47:01

主干事件散列与DOM关联,而不是与视图关联。

检查如何在View元素中运行触发器:

代码语言:javascript
复制
var TestView = Backbone.View.extend({

    events:{
        'transition:complete': 'onPageLoaded'
    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.$el.trigger('transition:complete');

但是,如果自定义事件不需要绑定到元素,您的第一个代码就可以了,只需将bind替换为on,如下所示:

代码语言:javascript
复制
this.on('transistion:complete', this.onPageLoaded);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11188824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档