【问题标题】:Backbone form, escape骨干形态,逃逸
【发布时间】:2013-07-29 10:49:08
【问题描述】:

我在我网站的一个页面上开发了一个非常简单的 Backbone 应用程序,但遇到了表单问题。

我有一个列表(项目集合),当我点击一个项目的名称时,它会被一个表单替换。

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

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

这是我的编辑表单 Backbone 视图:

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;
    }
});

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

谢谢

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

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

    //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”处理程序,然后将该事件传播到您的视图。

    【讨论】:

    • 非常感谢!我曾尝试过一些类似的东西,但不起作用。您的示例运行良好。
    猜你喜欢
    • 2015-06-10
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多