Итак, я много читал об обсуждении Iron Router и FlowRouter.
Я начал свой проект с помощью Iron Router, но с тех пор передумал и сейчас перехожу на FlowRouter.
Все шло гладко, пока я не начал переносить раздел комментариев в своем приложении. Видите ли, этот раздел повторно используется в приложении несколько раз, он служит разделом комментариев для новостей, сообщений, фотографий, видео и т. д.
Пример использования контекста данных IR:
Router.route('/news/:slug', {
name: 'newsItem',
waitOn: function() { Meteor.subscribe('news.single', this.params.slug) },
data: function() {
return News.findOne({slug: this.params.slug});
}
});
<template name="newsItem">
<p>{{title}}</p>
<p>{{body}}</p>
{{> commentSection}}
</template>
Схема коллекции комментариев имеет «тип» (чтобы знать, к какому типу «вещи» относится этот комментарий, новостям, фотографиям и т. д.). Этот тип был установлен в событии form .submit шаблона commentSection. Пример:
'submit form': function(e, template) {
e.preventDefault();
var $body = $(e.target).find('[name=body]');
console.log(template.data.type);
var comment = {
type: template.data.type,
parentId: template.data._id,
parentSlug: template.data.slug,
body: $body.val()
};
Meteor.call('insertComment', comment, function(error, commentId) {
if (error){
alert(error.reason);
} else {
$body.val('');
}
});
}
Это сработало, потому что контекст данных шаблона содержал элемент новостей, который, в свою очередь, также имеет свойство типа.
Как я мог добиться чего-то подобного только с помощью Flow Router без установки данных в шаблоне, как это рекомендуется в официальном руководстве?