我有一个简单事件的Backbone View:
Backbone.View.extend({
events: {
"change #id": "idChanged"
},
idChanged: function () {}
initialize: function () {
/* construct HTML */
$("#id").trigger("change");
}
});
然而,这不会触发idChanged
事件。当我使用浏览器更改#id
时,会触发。如何触发Backbone View事件?
答案 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
内。如果元素在视图之外,它将无法工作。
另外,在初始化时不能触发它,因为在执行该函数之前,视图尚未完全初始化。 :)
这是一个有效的例子:
答案 2 :(得分:0)
你用过“extend”。 相同的代码应该适用于Backbone.view.Object({....}) 指定要在其中触发事件的对象。
Backbone.View.Ojbect(
{
events: function () {
"change #id": "idChanged"
},
idChanged: funciton () {}
initialize: function () {
/* construct HTML */
$("#id").trigger("change");
}
}
);
也就是说,尽量不要延长。