나는 훌륭한 Meteor 발견 도서에서 Meteor를 배우고 있으며 Router.go() 함수가 다른 어떤 것으로 생각 될 수있는 방법에 대해 이해하려고 애 쓰고 있습니다. 초보자는에 대한 답변을 사용할 수 있습니다.Router.go()가 Meteor에서 작동하는 방식 이해하기
컨텍스트 : 아래 코드는 postSubmit 양식 (양식에 포함되지 않은 코드)에서 url 및 title 값을 가져 와서이를 사용하여 새 게시물을 만듭니다. 그런 다음 Router.go()
을 사용하여 posts/: _ id url에있는 postPage
템플릿으로 이동하여 새로 생성 된 게시물에 대한 정보를 표시합니다. 이 코드는 모두 작동합니다.
내 질문은 : 당신이 Router.go()
전화뿐만 아니라 'postPage'템플릿에 전달할 때, 당신이 두 번째 매개 변수는 포스트 ID에게의 요소입니다로 전달해야 할 것이라고 기대 양식 {_id: post._id}
(또한 작동합니다, 나는 그것을 시도했습니다) 경로가 필요로하는 것입니다. 그렇다면 왜 ID가 아닌 post
var (URL과 제목을 포함)을 전달합니까?
//post_submit.js
Template.postSubmit.events({ 'submit form': function(e) {
e.preventDefault();
var post = {
url: $(e.target).find('[name=url]').val(),
title: $(e.target).find('[name=title]').val()
};
post._id = Posts.insert(post);
//THE 'post' PARAMETER HERE INSTEAD OF '{_id: post._id}' IS WHAT I'M QUESTIONING
Router.go('postPage', post);
}
});
그리고 라우터에 대한 코드 :
여기 내 코드의
//Route for the postPage template
Router.route('/posts/:_id',
{name: 'postPage',
data: function(){ return Posts.findOne(this.params._id); }
});
David 덕분에 Meteor는 대부분의 프레임 워크보다 훨씬 '지능적'입니다. 가끔은 꽤 믿을 수 없습니다! – iteles