2014-09-02 3 views
0

У меня есть шаблон с yield раздела:Meteor: Доступ к контексту (шаблон) данных в оказанной обратного вызова

{{>yield}} 

В yield я отображаются формы с полями, заполненными редактируемой категории данных:

this.route('editCategory', { 
    path: '/panel/category/:_id/edit', 
    layoutTemplate: 'panelTemplate', 
    template: 'editCategoryTemplate', 
    data: function(){ 
     return Categories.findOne(this.params._id); 
    }, 
}); 

Существует выборка (где я выбираю родительскую категорию) с несколькими параметрами. Я выбор ранее выбранный вариант с помощью сценария:

Template.editCategoryTemplate.rendered = function(){ 
    $('#categoryParent option[value="'+ this.data.parent +'"]').prop('selected', true); 
}; 

И все работает нормально, но после перезагрузки страницы произошла ошибка:

Exception from Deps afterFlush function: this.data is null 

Любая помощь будет оценена.

+0

Может быть, эта страница может предоставить некоторую помощь http://www.meteorpedia.com/read/TypeError_-_Cannot_read_property_nodeName_of_null –

+0

Я предполагаю, что функция обратного вызова в rendered вызывается, когда экземпляр шаблона визуализируется, но, возможно, данные еще не получены, поэтому нет родительского доступа. –

+0

У меня есть аналогичная догадка - но как это решить? Как заставить Meteor ждать/извлекать эти данные? (он уже сохранен в коллекции документов категорий) – mrmnmly

ответ

1

Это хорошая идея поставить охранников:

Вместо использования this.data.parent записи:

Deps.autorun(function(){ 
    var parentData = this.data && this.data.parent; 
    if(parentData){ 
    $('#categoryParent option[value="'+ parentData +'"]').prop('selected', true); 
    } 
})