簡體   English   中英

與require.js和ribs.stickit一起使用的怪異Backbone.Validation錯誤

[英]Weird Backbone.Validation bug when used with require.js and backbone.stickit

我正在將T.Hedersen的ribs.validation插件( https://github.com/thedersen/backbone.validation )與ribs.stickit插件一起用於模型綁定。 我遇到一個奇怪的錯誤,其中當模型的單個屬性更改時,它會不斷驗證所有字段。 這是代碼

模型

define(function(require) {

    "use strict";
    var $ = require('jquery'),
            Backbone = require('backbone'),
            Validation = require('backbone.validation'),
            applicantModel = Backbone.Model.extend({
        defaults: {
            firstName: '',
            middleName: '',
            lastName: ''
        },
        initialize: function() {
        },
        validation: {
            firstName: {
                required: true
            },
             middleName: {
                required: true
            },
            lastName: {
                required: true
            }

        }
    });

    return new applicantModel;
});

視圖

define(function(require){

"use strict";

var $ = require('jquery'),
        _ = require('underscore'),
        Backbone = require('backbone'),
        tpl = require('text!templates/primaryApplicantInfo.html'),
        lovValues = require('application/models/lovModel'),
        Stickit = require('stickit'),
        ApplicantModel = require('application/models/applicantModel'),
        Validation = require('backbone.validation'),
        template = _.template(tpl),

        applicantView = Backbone.View.extend({
         initialize: function() {
         console.log('Inside the initialization function');



        this.render();
    },
    bindings: {
        '[name=firstName]': {
            observe: 'firstName',
            setOptions: {
                validate: true
            }
        },
        '[name=middleName]': {
            observe: 'middleName',
            setOptions: {
                validate: true
            }
        },
        '[name=lastName]': {
            observe: 'lastName',
            setOptions: {
                validate: true
            }
        }
    },

    render: function() {
        console.log("Inside applicant view");
        //Render application header
        this.$el.html(template);
        this.stickit();
        Backbone.Validation.bind(this, {
        //The problem is here, this executes for all the attributes of the model when changing a single attribute
            forceUpdate: true,
            valid: function(view, attr) {
                console.log("Validity is proper for "+attr);
            },
            invalid: function(view, attr, error) {
                console.log("Validity is improper for "+attr);
            }
        });
        $.each(lovValues.toJSON().suffix, function(val, text) {
            console.log(text.text);
            $('#applicantInfoSuffix').append(new Option(text.text, text.value));
        });

請勿將模型的默認值設置為“”。 如果可能,請刪除默認值。

define(function(require){

"use strict";
var $ = require('jquery'),
        Backbone = require('backbone'),
        Validation = require('backbone.validation'),
        applicantModel = Backbone.Model.extend({
    initialize: function() {
    },
    validation: {
        firstName: {
            required: true
        },
         middleName: {
            required: true
        },
        lastName: {
            required: true
        }

    }
});

return new applicantModel;

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM