2016-01-20 3 views
1

У меня есть следующий метод в meteor (я использую схемы), который я вызываю, чтобы вставить объект в базу данных.Параметры метода прохождения через шаблон

userAddOrder: function(newOrder, prize) { 
     var currentPrize; 
     if (prize == undefined) { 
      currentPrize = undefined; 
     } 
     else{ 
      currentPrize = prize; 
     } 
     // Ininitalize the newOrder fields. 
     // Check if someone is logged in 
     if(this.userId) { 
      newOrder.userId = this.userId; 
      // Set the weight and price to be processed by the admin in the future 
      newOrder.weight = undefined; 
      newOrder.price = currentPrize; 
      newOrder.status = false; 
      newOrder.receiveDate = new Date(); 
      newOrder.deliveryDate = new Date(); 
      Orders.insert(newOrder); 
     } else { 
      return; 
     } 
    }, 

В общем, я должен передать ему параметр «приз» в качестве параметра. Проблема в том, что, несмотря на то, что у меня настроен приз, я не смог найти способ передать его методу через шаблон. Один из способов я пытался это сделать помощника и попытаться передать его:

{{#autoForm schema="UserOrderSchema" id="userInsertOrderForm" type="method" meteormethod="userAddOrder,prizeRequest"}} 

Но он возвращает ошибку:

"method not found"

Другой способ заключается в вызове метода в файле JS с помощью простого форма (не предоставленная автоформа). Я думаю, что второй должен работать, но я не хочу переписывать весь шаблон. Есть ли способ сделать это без этого?

ответ

1

Как указано в авто формы документации, метод должен принимать один параметр:

«будет вызывать метод сервера с указанным именем в атрибуте meteormethod Передает один аргумент, документ, который является. документ, полученный в результате подачи формы ».

Таким образом, использование формы, основанной на методе, не поможет вам. Вместо этого следует использовать «нормальный» вид:

{{#autoForm schema="UserOrderSchema" id="userInsertOrderForm" type="normal"}} 

Затем добавьте авто форму отправить крюк:

AutoForm.hooks({ 
    userInsertOrderForm: { 
    onSubmit: function (insertDoc, updateDoc, currentDoc) { 
     var prize = ...; 
     Meteor.call('userAddOrder', prize, function(err, result) { 
     if (!err) { 
      this.done(); 
     } else { 
      this.done(new Error("Submission failed")); 
     }); 
     }); 

     return false; 
    } 
    } 
}); 
+0

Спасибо за ответ. На самом деле, я нашел другой путь. Я просто добавил скрытое поле, значение которого является упомянутым помощником: {{> afQuickField name = 'price' value = primRequest type = "hidden"}} – StefanL19

+0

Действительно, это просто :) – tarmes

Смежные вопросы