0

私は meteor を初めて使用し、テンプレートのクリック イベントの結果であるクエリの結果を、クリック イベントの後に表示される別のテンプレートに渡す方法を知りたいと思っています。

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>

私はいくつかの改訂を行い、その最初の提案と同様のことをしました。しかし、クエリ結果全体をセッションに入れませんでした。代わりに、選択した ID を配置し、ヘルパーにプロジェクトの詳細を照会させました。しかし、そうしても、望ましい結果は得られません。

Template.projectDetail.helpers({

    detail: function(){

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

        return proj;
    }

});
4

1 に答える 1

1

そのためにヘルパーを使用する必要があります。たとえば、projectDetail テンプレートに渡す結果が project であるとします。

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}} は、クリック イベントからのクエリの結果に依存します。

于 2015-04-04T10:00:20.683 に答える