我在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";
}
问题在于,当我保存模型的实例时,在模型中调用validate函数并成功返回字符串消息,但不会触发ItemView中的无效事件。
由于
答案 0 :(得分:0)
您应该触发'invalid'事件并将错误meggase作为属性返回。
validate: function(attrs) {
if(attrs.Code == "")
this.trigger('invalid', 'Error in Code field');
else if(attrs.Name == "")
this.trigger('invalid', 'Error in Name field');
}
喜欢这个。
答案 1 :(得分: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>');
}
});