我对Ember有点陌生,我在做一些应该很简单的事情。只是试着验证一个表单。使用成员-表格和成员-验证。
这里是结构的一部分,我将非常详尽地介绍一下,这样您就可以了解问题所在了,但是实际上并没有太多的代码:
/app
/controllers
/admin
/create-user.js
/models
/admin
/create-user.js
/routes
/admin
/create-user.js
/templates
/admin
/create-user.js首先,我不确定这是一个好的结构,特别是关于模型。
模式:
import DS from 'ember-data';
import EmberValidations from 'ember-validations';
export default DS.Model.extend(EmberValidations, {
entity: DS.attr()
}).reopen({
validations: {
entity: {
presence: true,
length: { minimum: 5 }
}
}
});控制员:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
createUser() {
console.log("create");
}
}
});路线:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('admin/create-user');
}
});模板:
<h3>Create User</h3>
<div class="row">
<div class="col-sm-6">
{{#em-form action="createUser" model=admin/create-user}}
{{em-input
label="Name / Entity"
property="entity"
placeholder="The name of the user or the entity"}}
{{/em-form}}
</div>
</div>我知道我遗漏了一些东西,而且我很确定它与模型有关(我尝试了很多东西,比如模板中的model=admin/create-user )。
编辑:控制台中没有错误或任何东西,只是没有调用验证。
谢谢你的帮助!
发布于 2015-08-27 01:00:30
首先让我感到惊讶的是,在代码中的任何地方,您都不会通过以下方法检查数据是否有效:
// Somewhere in your controller
this.get('isValid');第二,您的验证是在控制器而不是模型上定义的。如果您的控制器扩展了ObjectController (现在已不再推荐),它会自动将属性代理到模型中,这将非常有效。
如果您正在扩展Controller,并且希望验证模型,则需要对它们进行稍微不同的定义:
validations: {
'model.entity': {
presence: true,
length: { minimum: 5 }
}
}第三,您从未通过路由将模型的实例实际传递给控制器(即使验证仍然有效):
export default Ember.Route.extend({
model: function() {
// assuming you're using Ember Data
// find the model with id of 1
return this.store.find('admin/create-user', 1);
}
});https://stackoverflow.com/questions/32238972
复制相似问题