Javascript 如何在视图中呈现主干模型错误而不丢失无效输入?

Javascript 如何在视图中呈现主干模型错误而不丢失无效输入?,javascript,backbone.js,Javascript,Backbone.js,我在主干视图中有一个表单,其中用户输入被收集并存储在模型中。假设用户输入的信息违反了支持模型的验证逻辑。如何在不丢失无效输入的情况下将这些错误输出到视图 目前我只是重新渲染视图,它用模型中的输入替换了所有输入,但是因为无效输入从未存储在那里,所以它们丢失了 是否有一种简单的方法可以捕获所有无效数据并将其与错误消息一起一次性重新呈现,还是必须编写自定义jQuery以在表单DOM中附加嵌套的错误消息而不重新呈现它?您的视图可以跟踪validate方法引发的错误事件并相应地呈现。比如说, var MV

我在主干视图中有一个表单,其中用户输入被收集并存储在模型中。假设用户输入的信息违反了支持模型的验证逻辑。如何在不丢失无效输入的情况下将这些错误输出到视图

目前我只是重新渲染视图,它用模型中的输入替换了所有输入,但是因为无效输入从未存储在那里,所以它们丢失了


是否有一种简单的方法可以捕获所有无效数据并将其与错误消息一起一次性重新呈现,还是必须编写自定义jQuery以在表单DOM中附加嵌套的错误消息而不重新呈现它?

您的视图可以跟踪validate方法引发的错误事件并相应地呈现。比如说,

var MView=Backbone.View.extend({
    initialize: function() {
        this.model.bind("error",this.renderErr,this);
        this.model.bind("change",this.render,this);
    },
    render: function() {
        console.log("ok");
    },
    renderErr: function(model,attrs) {
       //attr contains the attributes passed to validate
        console.log(attrs);
    }
});
var M=Backbone.Model.extend({
    defaults: {
        name:"locked",
        whatever:"value"
    },

    validate:function(attrs) {
        //returns the attributes being set. Will be used in the renderErr method
        if (attrs.name!="locked") return attrs;
    }
});

var m=new M();
var mv=new MView( {model:m} );
mv.render();
m.set({name:"err",whatever:"other"});
m.set({name:"locked",whatever:"other"});