我正在尝试使用 ember-validations 库对我的应用程序中的新联系人实施表单验证。我目前正在使用带有夹具的 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 的新手,并被建议将以下逻辑放在路由中而不是控制器中。我还没有看到任何使用 ember-validations 完成此操作的示例,所以我不确定这是否是我关于验证的问题。
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,但这个问题让我大吃一惊。任何帮助将非常感激。