0

我在 ItemView 中定义了以下事件:

modelEvents: {
            "change": "refresh",
            "invalid": "handleValidation"
        }

我的模型中的验证功能是:

validate: function(attrs) {
            if(attrs.Code == "")
                return "Error in Code field";
            else if(attrs.Name == "")
                return "Error in Name field";
        }

问题是,当我保存模型的实例时,在模型中调用验证函数并成功返回字符串消息,但未触发 ItemView 中的无效事件。

谢谢

4

2 回答 2

0

您应该触发“无效”事件并将错误 megase 作为属性返回。

validate: function(attrs) {
        if(attrs.Code == "")
            this.trigger('invalid', 'Error in Code field');

        else if(attrs.Name == "")
           this.trigger('invalid', 'Error in Name field');
    }

像这样。

于 2013-09-24T12:11:21.647 回答
0

你现在拥有的应该可以工作。您提供的代码中必须存在一些断开连接。我创建了一个简单的 JSFiddle 来采样您想要的功能:http: //jsfiddle.net/craigjennings11/DZtDm/

var View = Backbone.Marionette.ItemView.extend({
    el: '#content',
    template: _.template('<button>Hello World</button>'),
    events: {
        'click button': 'tryToSave'
    },
    modelEvents: {
        'invalid': 'failedValidation'
    },
    tryToSave: function() {
        this.model.save();
    },
    failedValidation: function(err) {
        this.$el.append('<div>' + err.validationError + '</div>');
    }
});
于 2013-09-24T21:48:38.570 回答