首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember表单验证

Ember表单验证
EN

Stack Overflow用户
提问于 2015-08-27 00:50:54
回答 1查看 214关注 0票数 0

我对Ember有点陌生,我在做一些应该很简单的事情。只是试着验证一个表单。使用成员-表格成员-验证

这里是结构的一部分,我将非常详尽地介绍一下,这样您就可以了解问题所在了,但是实际上并没有太多的代码:

代码语言:javascript
复制
 /app
   /controllers
     /admin
       /create-user.js
   /models
     /admin
       /create-user.js
   /routes
     /admin
       /create-user.js
   /templates
     /admin
       /create-user.js

首先,我不确定这是一个好的结构,特别是关于模型。

模式:

代码语言:javascript
复制
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 }
    }
  }
});

控制员:

代码语言:javascript
复制
import Ember from 'ember';

export default Ember.Controller.extend({
  actions: {
    createUser() {
      console.log("create");
    }
  }
});

路线:

代码语言:javascript
复制
import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return this.store.createRecord('admin/create-user');
  }
});

模板:

代码语言:javascript
复制
<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 )。

编辑:控制台中没有错误或任何东西,只是没有调用验证。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 01:00:30

首先让我感到惊讶的是,在代码中的任何地方,您都不会通过以下方法检查数据是否有效:

代码语言:javascript
复制
// Somewhere in your controller
this.get('isValid');

第二,您的验证是在控制器而不是模型上定义的。如果您的控制器扩展了ObjectController (现在已不再推荐),它会自动将属性代理到模型中,这将非常有效。

如果您正在扩展Controller,并且希望验证模型,则需要对它们进行稍微不同的定义:

代码语言:javascript
复制
validations: {
  'model.entity': {
    presence: true,
    length: { minimum: 5 }
  }
}

第三,您从未通过路由将模型的实例实际传递给控制器(即使验证仍然有效):

代码语言:javascript
复制
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);
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32238972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档