Как передать результат события в шаблон на метеоре

Я новичок в метеоре, и мне интересно, как я могу передать результат запроса, который является результатом события щелчка шаблона, в другой шаблон, который появится после события щелчка.

Template.projectList.events({

    "click .list-group-item": function(){
        //Session.set("projectSelected", true);
        Session.set("projectSelected", this._id)
    }
});

<template name="projectDetail">
<div class="project">
    <h4 class="project-title">
        <span>{{name}}</span>
        <i class="glyphicon glyphicon-trash pull-right del"></i>
        <i class="glyphicon glyphicon-plus pull-right add"></i>
    </h4>
    <div class="clearfix"></div>
    <div class="project-description">
        <label>Project description:</label>
        <p>
        {{remarks}}
        </p>
    </div>
</div>
</template>

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

Template.projectDetail.helpers({

    detail: function(){

        if(Session.get("projectSelected")){
            var proj = Project.find({_id: Session.get("projectSelected")}).fetch();
        }

        return proj;
    }

});

person JCm    schedule 04.04.2015    source источник


Ответы (1)


Вы должны использовать помощников для этого. Например, предположим, что проект — это результат, который вы хотите передать в шаблон projectDetail:

Template.projectList.events({    
    "click .list-group-item": function(){
        Session.set("projectSelected", true);    
        var project = Project.find({_id: this._id}).fetch();
        // Store project in Session
        Session.set("aProject", project);
    }
});
Template.projectDetail.helpers({
    project: function () {
        // Get the project back from Session
        var project = Session.get("aProject");
        return project;
    }
});

Итак, теперь в вашем шаблоне projectDetail {{project}} будет зависеть от результата запроса из события клика.

person Kirill    schedule 04.04.2015
comment
Привет, я сделал, как вы предложили, купить безрезультатно .. как мне теперь записать этот результат в мой шаблон? - person JCm; 04.04.2015
comment
Не могли бы вы объяснить, что вы подразумеваете под «захватом результата в шаблон»? Кроме того, то, что на самом деле содержит результат запроса, может помочь дать более конкретный ответ. - person Kirill; 04.04.2015
comment
Теперь все в порядке, я попробовал ваше предложение, а также попробовал обходной путь, который я сделал с идеей, аналогичной вашему предложению. наша идея была на самом деле правильной. проблема в шаблоне. Я использовал пробел {{#with project}}, так как считаю его правильным, но не получил данные. Я использовал {{#each}} и теперь получаю возвращаемые данные. Можете ли вы объяснить мне правильное использование {{#with}} - person JCm; 04.04.2015
comment
each перебирает массив, а with больше похож на import в таких языках, как java или C++. Вот ссылка с хорошим объяснением: ссылка - person Kirill; 04.04.2015