使用jQuery触发视图事件

时间:2014-03-12 16:21:49

标签: javascript jquery backbone.js

我有一个简单事件的Backbone View:

Backbone.View.extend({
    events: {
        "change #id": "idChanged"
    },
    idChanged: function () {}
    initialize: function () {
        /* construct HTML */

        $("#id").trigger("change");
    }
});

然而,这不会触发idChanged事件。当我使用浏览器更改#id时,触发。如何触发Backbone View事件?

3 个答案:

答案 0 :(得分:1)

这是因为events哈希将在呈现时绑定到视图,在 initialize代码运行之后发生。尝试直接调用所需的回调:

Backbone.View.extend({
    events: function () {
        "change #id": "idChanged"
    },
    idChanged: function () {}
    initialize: function () {
        /* construct HTML */

        this.idChanged();
    }
});

答案 1 :(得分:1)

代码中的一些内容。

1我认为你没有正确定义你的活动。

它应该是一个哈希,或者是一个返回哈希的函数,如下所示:

events: {
    "change #id": "idChanged"
}

2一些类似于"功能"的拼写错误并且缺少逗号

然后,为了使事件有效,定义的#id元素必须位于视图的el内。如果元素在视图之外,它将无法工作。

另外,在初始化时不能触发它,因为在执行该函数之前,视图尚未完全初始化。 :)

这是一个有效的例子:

http://jsfiddle.net/3KmzQ/

答案 2 :(得分:0)

你用过“extend”。 相同的代码应该适用于Backbone.view.Object({....}) 指定要在其中触发事件的对象。

Backbone.View.Ojbect(
  {
    events: function () {

    "change #id": "idChanged"
    },

idChanged: funciton () {}

initialize: function () {
    /* construct HTML */
    $("#id").trigger("change");
}
}
);

也就是说,尽量不要延长。