2016-12-08 2 views
0

Meteor의 IronRouter를 사용하여 컬렉션의 고유 ID를 첨부하고 해당 ID를 기반으로 페이지를 만드는 방법은 무엇입니까? 또한 페이지에서 어떻게 해당 컬렉션의 정보를 가져 와서 표시합니까?IronRouter를 사용하여 컬렉션과 함께 고유 페이지 첨부하기

컬렉션에서 고유 한 페이지의 컬렉션에서 데이터를 검색하는 방법에 문제가 있습니다.하지만 제출의 ID를 수집하려고했습니다.

는 지금까지 수집, 내가 가진 :

Router.route('/works/:_id', function() { 
    this.render('Collab'); 
}, { 
    name: 'collab', 
    data: function(){ 
     var workId = this.params._id; 
     return Works.findOne({ _id: workId }); 
    } 
}); 

그리고 템플릿 파일 :

<!-- Publishing the template work --> 
<template name="main"> 
         <form class="new-work col s12"> 
          <div class="row"> 
           <div class="input-field col s6"> 
            <input id="title" type="text" class="validate"> 
            <label for="title">Name of work</label> 
           </div> 
           <div class="input-field col s6"> 
            <select> 
             <option value="" selected>Choose category</option> 
             <option value="1">Prose</option> 
            </select> 
            <label></label> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="input-field col s12"> 
            <input id="workBriefDesc" type="text" length="250"> 
            <label for="workBriefDesc">Brief description</label> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="input-field col s12"> 
            <textarea id="workFullDesc" class="materialize-textarea" length="10000"></textarea> 
            <label for="workFullDesc">Full description</label> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="input-field col s12"> 
            <textarea id="workessay" class="materialize-textarea"></textarea> 
            <label for="workessay">Essay</label> 
           </div> 
          </div> 
          <div class="modal-footer"> 
           <button href="#!" class="modal-action modal-close waves-effect waves-grey btn-flat center" type="submit" name="action">Submit</button> 
          </div> 
         </form> 
    {{#each works}} {{ > work}} {{/each}} 
</template> 

<!-- Link to the unique page --> 
<template name="work"> 
    Go to <a href="/work/{{_id}}">work</a> 
</template> 


<!-- Unique page attached to ID --> 
<template name="collab"> 
    {{title}} <br> 
    {{workBriefDesc}} <br> 
    {{workFullDesc}} 
</template> 

답변

0

당신은 수정해야

import { Meteor } from 'meteor/meteor'; 
import { Template } from 'meteor/templating'; 
import { Works } from '../api/works.js'; 

import './work.js'; 
import './body.html'; 

Template.main.helpers({ 
    works() { 
    return Works.find({}, { sort: { createdAt: -1 } }); 
    }, 
}); 

Template.main.events({ 
    'submit .new-work'(event) { 
    event.preventDefault(); 

    const title = event.target.title.value; 
    const workBriefDesc = event.target.workBriefDesc.value; 
    const workFullDesc = event.target.workFullDesc.value; 
    const workId = this._id; 

    Works.insert({ 
     title, 
     workBriefDesc, 
     workFullDesc, 
     createdAt: new Date(), 
     owner: Meteor.userId(), 
     username: Meteor.user().username, 
     workId, 
    }); 

    event.target.title.value = ''; 
    event.target.workbriefdesc.value = ''; 
    event.target.workfulldesc.value = ''; 

    }, 
}); 

을 그리고 IronRouter 파일 귀하의 도우미 :

Template.main.helpers({ 
    works: function(){ 
    return Works.findOne({_id:Router.current().params.workId}); 
    }, 
}); 
+0

안타깝게도 기본 템플릿에서 foreach 루프가 작동하지 않습니다. 또한 IronRouter 데이터 함수 섹션에 테스트를 시도했지만 아무 것도하지 않습니다. – DarkTakua

0

도우미 : 내 생각에, 당신은 당신의 "일"도우미에 하나의 조건을 넣어야한다고 생각합니다.

위의 코드에서 코드

Template.main.helpers({ 
    works() { 
    return Works.find({}, { sort: { createdAt: -1 } }); 
    }, 
}); 

, return 문을 변경하고 시도하십시오.

UPDATE

return Works.findOne({_id:Router.current().params._Id}); 

희망이 작품!

+0

다른 솔루션과 마찬가지로 기본 템플릿의 루프가 손상됩니다. – DarkTakua