2016-03-04 2 views
0

У меня возникают проблемы с вставкой родительского идентификатора в autoform с метеор. Я использую AUTOFORM крюк:Проблемы с вставкой родительского идентификатора в autoform с метеорным

Template.NewLecture.onRendered(function(){ 

    AutoForm.hooks({ 
     insertLectureForm: { 
      insert: { 
       method: function(doc) { 
        doc.courseId = Template.parentData(1)._id; 
        return doc; 
       } 
      } 
     } 
    }); 
}); 

Template.parentData (1) ._ идентификатор правильно возвращает правильный идентификатор, но это не похоже, чтобы сохранить в документ. Это шаблон:

<template name="NewLecture"> 
     <div class="new-lecture-container"> 
      {{> quickForm collection='Lectures' id='insertLectureForm' type="insert" class="new-lecture-form"}} 
     </div> 
    </template> 

Это схема:

LectureSchema = new SimpleSchema({ 
    name: { 
     type: String, 
     label: "Lecture", 
     optional: true 
    }, 
    courseId: { 
     type: String, 
     label: "CourseId", 
     autoform: { 
      type: "hidden" 
     } 
     optional: true 
    } 
}); 

Lectures.attachSchema(LectureSchema); 

Что именно я здесь отсутствует? Лекция вставляет отлично, за исключением courseId, является черным. Если я использую крючки автоформы, чтобы установить значение courseId, как я должен устанавливать его в схеме, чтобы принять это? Благодаря!

EDIT: Я не решил его, но проблема заключается в том, что Template.parentData (1) ._ id не возвращает то же самое внутри метода вставки, что и внутри секции onRender. Используя этот новый крючок:

Template.NewLecture.onRendered(function(){ 
    console.log(Template.parentData(1)) 

    AutoForm.hooks({ 
     insertLectureForm: { 
      before: { 
       insert: function(doc) { 
        doc.courseId = Template.parentData(1)._id; 
        console.log(Template.parentData(0)) 
        console.log(Template.parentData(1)) 
        console.log(Template.parentData(2)) 
        console.log(Template.parentData(3)) 
        console.log(doc) 
        return doc; 
       } 
      } 
     } 
    }); 
}); 

я получаю этот выход: enter image description here Итак, ясно, что первый и третий console.logs не совпадают здесь. Как я могу либо передать содержимое первого журнала консоли в этот крючок, либо получить его?

+1

Попробуйте один раз удаление 'autoValue' option.Also вы уверены, что' метод: function' ?? Попробуйте один раз с 'before: { Вставить функцию (doc) {' –

+1

Дайте мне знать, если ни один из них не работает –

ответ

1
{{#autoForm collection="Lectures" id="someID" class="default-form form-horizontal" type="inser"}} 
    {{>afQuickField name='courseId' type="hidden" value=helper}}  
{{/autoForm}} 

Template.NewLecture.helpers({ 
    helper:function(){ 
    return this._id 
    } 
}) 
+0

Я вижу, куда вы направляетесь, но я получаю ошибку: Исключение в помощнике шаблона: TypeError: Template.instance (. ..) parentData не является функцией. – Coherent

+1

Что такое 'Template.parentData (1) ._ id', я имею в виду, как вы присвоили ему значение? –

+0

Я использую это, чтобы отобразить уже существующие лекции: Template.AdminLectureList.helpers ({ Лекции: функция() { возврата Lectures.find ({courseId: this._id});} }); И использовал этот помощник шаблона: {{> NewLecture courseId = _id}} – Coherent

0

Thanks Sai! Таким образом, решение в том, что вы должны держать передавая свой родительский идентификатор вниз через помощников, как это:

<template name="AdminLectureList"> 
    {{> NewLecture courseId = _id }} 
</template> 

<template name="NewLecture"> 
    <div class="new-lecture-container"> 
     {{> quickForm collection='Lectures' id='insertLectureForm' courseId=courseId type="insert" class="new-lecture-form"}} 
    </div> 
</template> 

Template.NewLecture.onRendered(function(){ 
    AutoForm.hooks({ 
     insertLectureForm: { 
      before: { 
       insert: function(doc) { 
        doc.courseId = Template.parentData(0).courseId; 
        return doc; 
       } 
      } 
     } 
    }); 
}); 
+0

Точно, вы его получили –

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