Meine Validate-Funktion im Code unten nicht genannt zu werden: -Backbone Validate Funktion nicht immer genannt
var Vehicle = Backbone.Model.extend({
color: 'green',
validate: function (attrs) {
var validColors = ['white', 'red', 'blue', 'yellow'];
var colorIsValid = function (attrs) {
if (!attrs.color) return true;
return _.contains(validColors, attrs.color);
}
if(!colorIsValid(attrs)) {
return "color must be one of: " +validColors.join(",");
}
}
});
var car = new Vehicle();
car.on('error', function (model, error) {
console.log(error);
});
console.log(car.get('color'));
car.set('color', 'muave');
Bitte sehen Geige http://jsfiddle.net/vineet85/Fa8jr/5/
Kann mir jemand sagen, warum die Prüf-Funktion nicht aufgerufen zu werden ?
Fiddle noch nicht funktioniert .. http://jsfiddle.net/vineet85/Fa8jr/6/ – Vineet
Was erwarten Sie passieren? Ich denke, dass Ihre Validierungsmethode nun aufgerufen wird. Wenn Sie sich fragen, warum kein Fehler in die Konsole geschrieben wird, ist dies so, weil das Fehlerereignis nicht ausgelöst wird. Siehe aktualisierte Antwort. – Steve
@Vineet, indem Sie sagen, dass Ihre Geige immer noch nicht funktioniert, meinst du, dass Fehlermeldung ("* Farbe muss eine der folgenden sein: weiß, rot, blau, gelb *") nicht auf dem Konsolenprotokoll ausgedruckt? Ich habe bemerkt, dass du in deiner Fiddle immer noch event * error * anstelle von * invalid * verwendest, wie in Steves Antwort. – Tom