我在网站的一页上开发了一个非常简单的Backbone应用程序,并且表格存在问题。

我有一个列表(项目集合),当我单击项目名称时,将其替换为表格。

当我编辑名称并按Enter时,它可以正常工作,但找不到以下解决方案:
-如果我在页面上的任何其他位置按“ esc”键或更好的键,请退出表格
-当我没有修改文本时,按Enter键保存我的项目。

现在,当我单击一个项目并加载表单时,如果我要退出for,则不得不更改名称并按Enter。

这是我的编辑表单主干视图:

var EditForm = Backbone.View.extend({
    model: Item,
    template: _.template('<form>' +
        '<input name=name value="<%= name %>" />' +
        '</form>'),
    events: {
        submit: 'save'
    },
    save: function(e){
        e.preventDefault();
        var newName = this.$('input[name=name]').val();
        this.model.set({name: newName});
        this.model.save();
    },
    render: function(){
        this.$el.html(this.template(this.model.attributes));
        return this;
    }
});


如果有人已经实现了,我将非常感激有一个例子。

谢谢

最佳答案

您需要在视图上具有“键”处理程序,并检查其处理程序中的键代码。类似于以下内容:

//modify your events object like this
events:{
   submit: "save",
   "keyup": "checkAndHandleCancel"
}

//handler
checkAndHandleCancel: function(e){
 if (e.keyCode == 27) {
  //handle your cancel action here
 }
}


请记住,只有将重点放在表单上,​​这才起作用。如果需要处理全局“取消”,则需要在文档上具有类似的“ keyup”处理程序,然后将该事件传播到视图中。

关于javascript - 骨架形式,逃生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17922063/

10-11 12:26