2016-02-11 4 views
0

Я пытаюсь добавить комментарий, и у него есть поле {postId}. В настоящее время я возвращаю идентификатор сообщения, чтобы добавить его в коллекцию комментариев, делая var id = FlowRouter.getParam('id');, потому что мой маршрут содержит идентификатор определенной записи, о которой я собираюсь оставить в параметрах. Теперь я хочу изменить маршруты вместо myapp.com/posts/:id на myapp.com/post/:title, чтобы я больше не мог получить идентификатор из параметра. Как я могу получить идентификатор сообщение, когда оно больше не доступно в параметрах маршрутизатора?Как получить внутренний _id объекта в помощнике или событии?

Так прямо сейчас мой код события:

Template.post.events({ 
    "click #submitComment": function() { 
     var commentText = $("#commentfield").val(); 
    var postId = FlowRouter.getParam('id');` 
    Comments.insert({postId: postId, comment: commentText}); 
    } 

}) 

Я помню, для других приложений, которые я использовал что-то вроде template.data._id, но я не могу получить, чтобы работать

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

ответ

0

Вы пропавшие пропусканием переменную шаблона в событие Click:

"click #submitComment" : function (event, template) { .... 

Обратите внимание на (event, template). Теперь в рамках мероприятия используйте template.data._id, как вы предложили.

+0

Спасибо Nate, но все равно не будет работать, он не содержит никаких ошибок, но он не добавит template.data._id в коллекцию. Я пробовал что-то вроде этого: «\t» нажмите # buttonData ": функция (событие, шаблон) { \t \t \t \t вар ID = template.data._id; \t \t \t \t Comments.insert ({сообщения дан: идентификатор,}); \t \t \t}," – Adam

+0

что дает вам журнал «template.data'. 'console.log (template.data)' – Nate

+0

шаблон не определен .... для получения шаблона в моем приложении Я использую {{#with posts}} {{/ with}}, а помощником является return var id = FlowRouter.getParam ('ID'); , а затем вернуть Posts.findOne ({_ id: id}) – Adam

0

Если я понимаю это правильно, вы меняете свой маршрут с того, что у него есть идентификатор сообщения, чтобы вместо этого иметь поле заголовка. Также похоже, что вы знаете о #with. Так как помощник называется posts, вот пример кода, который я думаю, должен работать:

Template.post.helpers({ 
    posts() { 
     var post = Posts.findOne({title: FlowRouter.getParam('title')}); 
     if(post) { 
      return post; 
     } 
    } 
}); 

Я считаю, то, что ваш код события может оставаться такой же.