使用Backbone stickit进行骨干验证 - 更改一个属性时验证所有属性

Fra*_*123 6 backbone.js backbone-stickit

我试图在Backbone Stickit中使用Backbone Validation,我希望在用户输入时一次验证一个属性.但是,当用户输入值时,模型上的所有属性都会得到验证,而不仅仅是用户已更改的属性.我究竟做错了什么?

我的看法:

bindings:{
        '#username' : {
           observe:'username',
           setOptions: {
                validate:true
           }
        },

        '#email' : {
           observe:'email',
           setOptions: {
                validate:true
           }
        },

        '#firstname' : {
           observe:'firstName',
           setOptions: {
                validate:true
           }
        }, 

.......

onShow: function(){    
        Backbone.Validation.bind(this, {
              valid: function(view, attr) {
                alert('VALID - ' + attr);
              },
              invalid: function(view, attr, error) {
                alert('INVALID - ' + attr);
              }
            });

        this.stickit();

    },
Run Code Online (Sandbox Code Playgroud)

you*_*sco 4

在模型(1)setOptions中设置值时将使用您传递的所有内容。当您传递给 Backbone 模型的 set 函数时,它将验证模型中的值以及传递给 set 函数的值(2),这意味着每次您设置导致问题的新值时,它都会验证整个模型现在正在看到。你没有做错任何事。validate: true

您可以通过将验证拆分为多个单独的函数并仅在属性更改时调用所需的函数,然后更改验证函数以调用所有这些单独的函数来验证整个模型来解决此问题。