2

我想为我的非收集表单使用流星自动表单。我尝试这种方法,但我想获取方法返回值并将其显示在客户端上。请指导我如何做到这一点。

这是我的架构(common.js):

Schema = {};
Schema.echoSchema = new SimpleSchema({
    echoText: {
        type: String,
        label: "Echo Text",
        max: 50
    }
});

这是我在客户端(client.js)上的代码:

Template.showEcho.helpers({
    getEchoFormSchema: function() {
        return Schema.echoSchema;
    }
});

这是我在服务器(server.js)上的代码:

Meteor.methods({
  echoMethod: function (doc) {
    check(doc, Schema.echoSchema);
    return doc.echoText;
  },
});

这是我的表单模板(showEcho.html):

    <template name="showEcho">
        {{#autoForm schema=getEchoFormSchema id="echoForm" type="method" meteormethod="echoMethod"}}
            <fieldset>
                <legend>Echo Form</legend>
                    {{> afQuickField name="echoText"}}
                    <div>
                        <button type="submit" class="btn btn-primary">Submit</button>
                        <button type="reset" class="btn btn-default">Reset</button>
                    </div>
            </fieldset>
        {{/autoForm}}

        <p>
            // How To Show Echo Text HERE??
            Text = ???????????????????
        </p>
    </template>
4

1 回答 1

1

Autoform hooks 是你的朋友

在这里阅读

将此添加到您的客户端代码中:

AutoForm.hooks({
    'echoForm': {
        after: {
           method: function(error, result) {
              console.log("after");
              if (result) {
                 return Session.set('result', result);
              }
           }
        }
     }
});

在您的模板 js 文件中,创建一个帮助程序以返回 Session.get 'result'

Template.showEcho.helpers({
  text: function() {
    return Session.get('result')

  }
});

模板 html 文件:

<template name="showEcho">
    {{#autoForm schema=getEchoFormSchema id="echoForm" type="method" meteormethod="echoMethod"}}
       .
       .
       .
       . 
    {{/autoForm}}

    <p>
        {{text}}
    </p>
</template>
于 2015-04-27T09:55:37.423 回答