Moja funkcja validate nie jest uzyskiwanie nazywa się w poniższym kodzie: -Backbone nie uzyskiwanie nazywa
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');
proszę zobaczyć skrzypce http://jsfiddle.net/vineet85/Fa8jr/5/
Czy ktoś może mi powiedzieć, dlaczego funkcja validate nie nazywa uzyskiwanie ?
Fiddle nadal pracuje .. http://jsfiddle.net/vineet85/Fa8jr/6/ – Vineet
Czego spodziewa się zdarzyć? Myślę, że twoja metoda sprawdzania poprawności jest teraz wywoływana. Jeśli zastanawiasz się, dlaczego nie napisano błędu do konsoli, ponieważ zdarzenie błędu nie jest wyzwalane. Zobacz zaktualizowaną odpowiedź. – Steve
@Vetet, mówiąc, że twoje skrzypce wciąż nie działa, masz na myśli, że komunikat o błędzie ("* kolor musi być jednym z: biały, czerwony, niebieski, żółty *") nie jest drukowany w dzienniku konsoli? Zauważyłem, że w swoim Fiddle nadal używasz zdarzenia * błąd * zamiast * nieważny * jak w odpowiedzi Steve'a. – Tom