【问题标题】:Exception in defer callback: Error: No such template: autoform延迟回调中的异常:错误:没有这样的模板:autoform
【发布时间】:2018-03-02 01:51:06
【问题描述】:

假设我做了所有像 aldeed 描述的 here 那样创建自定义表单模板。我忘记了什么或者autoform标签不存在的错误在哪里?

实际的 html 示例:

<template name="afType_talkBar">
  {{#autoform schema=Schema.Nachrichten id="sendMessageForm" type="insert"}}
  <fieldset class="clubChat__input">
    <div class="clubChat__message-bar">
        {{> afQuickField name='chatroomId'}}
        {{> afQuickField name='userName'}}
        <div class="form-group{{#if afFieldIsInvalid name='content'}} has-error{{/if}}">
              <div class="input-group">
                <span class="input-group-addon">$</span>
                {{> afFieldInput name='content'}}
                <span class="input-group-addon">/each</span>
              </div>
              {{#if afFieldIsInvalid name='content'}}
              <span class="help-block">{{afFieldMessage name='content'}}</span>
              {{/if}}
        </div>
        <input type="submit" value="{{_ 'chatAction.send'}}">
    </div>
  </fieldset>
  {{/autoform}}
</template>

还有客户端talkBar.js

import './talkBar.html';

// Import necessary js Packages
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';

import { Nachrichten } from '../../../api/nachrichten/nachrichten';

奖金问题。插入

Template.talkBar.helpers({
  nachrichtenCollection(){
    return Nachrichten;
  }
});

导致 Uncaught TypeError: Cannot read property 'helpers' of undefined

看起来我缺少一些基本的东西

【问题讨论】:

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


    【解决方案1】:

    Typo Error 而不是 autoform 它必须是 autoForm

    正确的代码应该是这样的:

    <template name="afType_talkBar">
      {{#autoForm schema=Schema.Nachrichten id="sendMessageForm" type="insert"}}
      <fieldset class="clubChat__input">
        <div class="clubChat__message-bar">
            {{> afQuickField name='chatroomId'}}
            {{> afQuickField name='userName'}}
            <div class="form-group{{#if afFieldIsInvalid name='content'}} has-error{{/if}}">
                  <div class="input-group">
                    <span class="input-group-addon">$</span>
                    {{> afFieldInput name='content'}}
                    <span class="input-group-addon">/each</span>
                  </div>
                  {{#if afFieldIsInvalid name='content'}}
                  <span class="help-block">{{afFieldMessage name='content'}}</span>
                  {{/if}}
            </div>
            <input type="submit" value="{{_ 'chatAction.send'}}">
        </div>
      </fieldset>
      {{/autoForm}}
    </template>
    

    【讨论】:

      【解决方案2】:

      您在帮助程序定义中的模板名称不正确。图案如下

      Template.Template_Name.helpers({});

      您命名的模板名称不正确。应该是这样的,

      Template.afType_talkBar.helpers({});

      您在客户端 JS 文件中声明集合时也使用了相对路径。您可以如下使用,

      import { nachrichten } from '/import/api/nachrichten/nachrichten.js';

      这是更好的约定,因为您可以根据需要将 js 文件剪切粘贴到其他任何位置,并且您还可以创建许多 js 文件并在将来对其进行打乱,因此路径将根据您的声明而改变。

      【讨论】:

      • 感谢您澄清那部分。不知道模板名称指的是助手名称。但是自动表单仍然不会呈现。
      • 错误是什么?如果出现任何东西,请检查控制台。使用错误详细信息更新问题。我给了你你的问题的答案。如果现在错误是针对自动生成的,那么这是另一个问题。
      • 错误是/曾经是这个问题的标题。这确实是一些基本的东西。 StackOverflow 应该安装一个错字桶;)
      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 2015-08-31
      • 2010-10-30
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多