2015-04-27 3 views
2

Я хочу использовать meteor-autoform для своих не-коллекционных форм. Я пытаюсь использовать метод this, но хочу получить возвращаемое значение метода и отобразить его на клиенте. Пожалуйста, помогите мне, как это сделать.get autoform non-collection forms метод возвращаемое значение

Это моя схема (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> 

ответ

1

AUTOFORM крюки ваш друг

Read about it here

Добавьте это в ваш код клиента:

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> 
+1

текст возвращает объект, но вы получите основы – bya

+0

Спасибо за ваш полезный ответ. Пожалуйста, измените после: {'echoMethod': ... после: {method: .... // и почему это возвращает объект ?? – b24

+0

В вашем Meteor.method я думал, что вы вернули весь документ, не знаю, почему я это принял! Я был неправ. – bya