未显示

时间:2017-05-02 17:32:41

标签: javascript meteor coffeescript meteor-autoform simple-schema

我正在尝试实现一个自定义验证函数,它可以返回true(如果字段有效)或某些自定义错误消息。这是我目前的尝试:

global.Messages = Models.Messages = new Mongo.Collection 'messages'

MessagesSchema = new SimpleSchema({
  content: {
    type: String,
    label: "Message",
    max: 200,
    custom: ->
      if @obj.content.includes("a")
        true
      else
        "not contain a"
}, {tracker: Tracker})

Messages.attachSchema MessagesSchema

这是一个人为的例子,但仍然没有用。运行custom函数中的条件,并且当返回true时,记录会保存。但是,如果返回"not contain a",则不会成为客户端上显示的验证消息。它只是说content is invalid,我不知道如何自定义此消息。这是模板代码:

  {{#autoForm collection="Messages" id="insertMessageForm" type="insert"}}
    <fieldset>
      <legend>Add message</legend>
      {{> afFieldInput type='text' name='content'}}
      {{#if afFieldIsInvalid name='content'}}
      <span class="help-block">{{afFieldMessage name='content'}}</span>
      {{/if}}
    </fieldset>
    <button type='submit' class='btn btn-primary'>Insert</button>
  {{/autoForm}}

1 个答案:

答案 0 :(得分:0)

我的原始代码存在一些问题。

首先,我没有说明我的要求SimpleSchema,但应该这样做;这使用了node-simpl-schema迁移到meteor-simple-schema的新SimpleSchema = require('simpl-schema').default SimpleSchema.extendOptions(['autoform']); 包:

SimpleSchema.setDefaultMessages
  messages:
    en: 
      "notA": "doesnt contain a"

验证消息映射到密钥:

messages

encustom哈希是必要的,因为它是正确的结构。

重点custom: -> if @obj.content.includes("a") true else "notA" 的返回值在客户端上显示的消息。它是,指向默认消息对象中的条目。

例如:

"doesnt contain a"

这最终会显示消息df.isnull().sum().sum()