Backbone.js 更改事件未触发
Posted
技术标签:
【中文标题】Backbone.js 更改事件未触发【英文标题】:Backbone.js change event not firing 【发布时间】:2014-01-03 22:08:18 【问题描述】:我有很多选择框,每个框都有browse_select
的类。每当这些选择框中的任何选项发生更改但它没有触发此功能时,我都想触发 render
功能。
$(function()
var Users = Backbone.Collection.extend(
url: "/app/phpscripts/services/browse_users/?"
);
var UserView = Backbone.View.extend(
el: '.list_ctn ul',
tagName: 'li',
events:
"change .browse_select" : "render"
,
render: function()
console.log("render");
var users = new Users();
var that = this;
users.fetch(
success: function()
var template = _.template($('#myUserTemp').html(),users: users.models);
that.$el.html(template);
);
);
var userView = new UserView();
userView.render();
);
【问题讨论】:
视图事件的范围是视图本身,您的选择框是 UserView 的一部分吗? 此窗口中没有选择框,但 UserView 中没有。真的,我不知道视野事件本身的基本信息。 这个answer 可能有用。 你能添加你的模板代码吗? 【参考方案1】:仔细检查选择框是否在 #myUserTemp 中。
此外,您可能希望将 user.fetch 逻辑放在该视图之外。由于它是回调的一部分,我不确定是否可以根据您的流程正确设置事件侦听器。
我建议您从视图外部调用 fetch,然后在 fetch 成功时启动一个新的 UserView 并传递集合。这允许您以标准方式将 _.template() 设置为视图属性。
【讨论】:
以上是关于Backbone.js 更改事件未触发的主要内容,如果未能解决你的问题,请参考以下文章