Javascript 使用jQuery触发视图事件
我有一个简单事件的主干视图:Javascript 使用jQuery触发视图事件,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个简单事件的主干视图: Backbone.View.extend({ events: { "change #id": "idChanged" }, idChanged: function () {} initialize: function () { /* construct HTML */ $("#id").trigger("change"); } }); 但是,这不会触发idChanged事件。
Backbone.View.extend({
events: {
"change #id": "idChanged"
},
idChanged: function () {}
initialize: function () {
/* construct HTML */
$("#id").trigger("change");
}
});
但是,这不会触发idChanged
事件。当我用浏览器更改#id
时,它会触发。如何触发主干视图事件?您使用了“扩展”。
相同的代码应该应用于Backbone.view.Object({….})
指定要触发事件的对象
Backbone.View.Ojbect(
{
events: function () {
"change #id": "idChanged"
},
idChanged: funciton () {}
initialize: function () {
/* construct HTML */
$("#id").trigger("change");
}
}
);
也就是说,尽量不要扩展。这是因为
事件
哈希将在呈现视图时绑定到视图,这是在初始化
代码运行之后发生的。尝试直接调用所需的回调:
Backbone.View.extend({
events: function () {
"change #id": "idChanged"
},
idChanged: function () {}
initialize: function () {
/* construct HTML */
this.idChanged();
}
});
你的代码中有一些东西 1我认为您对事件的定义不正确 它应该是散列或返回散列的函数,如下所示:
events: {
"change #id": "idChanged"
}
2一些拼写错误,如“函数”和缺少逗号
然后,要使事件工作,定义的#id元素必须位于视图的el
中。如果元素在视图之外,它将无法工作
此外,您不能在initialize中触发该操作,因为在执行该函数之前,视图尚未完全初始化。:)
下面是一个工作示例:
您是说在使用浏览器时会触发事件,但通过
初始化方法它不会触发如果#id
元素是视图的一部分,则只有在呈现视图时,它才会在初始化时不存在。谢谢,这很有帮助。函数()
只是我的一个输入错误;我已经改正了。我需要能够在视图中触发事件;在initialize
之后是否有调用我可以使用的东西?因为您无论如何都需要渲染视图……您可以在render中执行:这是一个很好的建议,但现在事件数据不在我需要的idChanged
方法中(特别是e.target
用于#id
元素和可能的其他内容)