Я пытаюсь внедрить проверку формы в новом контакте в своем приложении, используя библиотеку проверки ember. В настоящее время я использую Ember Data с приборами, и я решил разместить валидации в модели, как пример в этом video. Я боролся с этим уже несколько дней и все еще не могу понять, почему валидации не работают. У меня нет никаких признаков того, что ошибки даже срабатывают.Ember-Validation Issue w/Ember CLI & Ember Data
//app/models/contact.js
import DS from "ember-data";
import EmberValidations from 'ember-validations';
//define the Contact model
var Contact = DS.Model.extend(EmberValidations, {
firstName: DS.attr('string'),
lastName: DS.attr('string'),
});
//Create Contact fixtures
Contact.reopenClass({
FIXTURES: [...]
});
Contact.reopen({
validations: {
firstName: {
presence: true,
length: { minimum: 2 }
},
lastName: {
presence: true
}
}
});
export default Contact;
Я новичок в Эмбер, и было рекомендовано поставить следующую логику маршрутов вместо контроллера. Я не видел примеров того, как это делается с помощью ember-валидации, поэтому я не уверен, что это моя проблема в отношении валидаций.
app/routes/contacts/new.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('contact');
},
actions: {
createContact: function() {
var contact = this.get('currentModel');
this.transitionTo('contacts');
contact.save();
alert(contact.errors);
},
cancelContact: function() {
var contact = this.get('currentModel');
contact.destroyRecord();
this.transitionTo('contacts');
}
}
});
Мое другое подозрение, что я не могу правильно обрабатывать ошибки в html?
//app/templates/contacts/new.hbs
{{#link-to 'contacts' class="btn btn-primary"}}Contacts{{/link-to}}
<form>
<label>First Name:</label>
{{input type="text" value=model.firstName}}<br>
<span class="error"></span>
<label>Last Name:</label>
{{input type="text" value=model.lastName}}<br>
<span class="error"></span>
</form>
<button {{action "createContact"}} class="btn btn-primary">Submit</button>
<button {{action "cancelContact"}} class="btn btn-warning">Cancel</button>
<br>
Вот мой контроллер
//app/controllers/contacts.js
import Ember from "ember";
export default Ember.Controller.extend({
});
Я наслаждаюсь Ember, но этот вопрос обструкцию меня сильно. Любая помощь приветствуется.