虽然我在演示中不关心 IE,但我确实想支持 Firefox。我已将问题追溯到此 javascript 错误,例如我已更改:
var dataCmd = $(e.srcElement).data('cmd');
到
var dataCmd = $(e.srcElement || e.target).data('cmd');
此更改已重新部署到http://bootstrapapi.apphb.com
基本上它的工作方式是我有一个全局点击处理程序来捕捉任何点击,如果 src/target 元素有一个cmd
定义,我将它发布到所有注册的模块:
$(document.body).click(function (e) {
console.log("handleClicks", e);
var dataCmd = $(e.srcElement || e.target).data('cmd');
if (!dataCmd) return;
var cmd = dataCmd.split(':'),
evt = cmd[0],
args = cmd.length > 1 ? cmd[1].split(',') : [];
app.sendCmd(evt, args);
});
因此,任何对该点击感兴趣的人都可以处理它。在这种情况下,data-cmd="signIn"
将是register.js模块,它只是在 Backbone 模型上设置用户首选项:
signIn: function(e) {
this.model.set({ hasRegistered: true });
},