javascript - 使用集合过滤事件

标签 javascript html mongodb meteor

我有包含单独集合的项目和工作流程。

collections:
Project = new Meteor.Collection("project");
Workflow = new Meteor.Collection("workflow");

创建项目后,我在表单中选择项目并显示工作流程图。

HTML:
<!-- Workflow Card -->


  <div id="wCard">

                {{#each workflow}}

                **<div class="pheader">
                     <h2>{{project}}</h2>
                     <hr width="100%">
                </div>**

                     <br>
                 <div class="workflowcard">
                 <div class="module-card">
                     <div class="card-header wfmodule">{{workflowTitle}}</div>
                   <div class="casting">
                    <div class="assigned-tag">Assigned To:</div>
                    <div class="assigned-to">{{team}}<hr></div>
                    <div class="actions">No Actions Created</div>
                    </div>
                    <div class="due">

                       Due on:

                        <div>
                            <div class="day-stamp" >{{weekday d_date}}</div>
                        <div class="date-stamp">{{date d_date}}</div>
                        <div class="month-stamp">{{month d_date}}</div>
                        </div>
                    </div>
                </div>
              <div class="btn-box showmuloption">
      <button type="edit" class="editw"  style="display:none">Edit Workflow</button>
      <button type="hide" class="hidew"  style="display:none">Hide Actions</button>
      <div class="actionBtn"><button class="btn-wf stage-blue-wf button-x-small-wf" id="newAction">New Action</button></div>

    </div>
            </div>
                {{/each}}
        </div>  

.JS:



Template.workflow.helpers({
    getWorkflow: function(){
        return Workflow.find();
    },
    user: function(){
 return  Meteor.users.find({});
 },
 getNewaction: function(){
        return Newaction.find();
    },

});

现在工作流卡显示在列表中。我想根据项目显示工作流程。如果我选择一个项目,工作流应该转到那个项目,我用相同的项目创建另一个工作流,它应该显示在那个项目中。如果我选择另一个项目,工作流应该显示在该相关项目中。

请帮忙解决这个问题。

最佳答案

我为此使用 react 变量。 首先你需要添加 meteor 包:

$ meteor add reactive-var

您的项目选择表单可能如下所示:

<select id="project" value="{{getProject}}">
   {{#each getProjectsList}}
      <option id='{{_id}}' value="{{_id}}">{{projectname}}</option>
   {{/each}}
</select>

不要忘记创建助手 getProjectgetProjectsList。 现在是 react 变量的时候了,你可以在 onCreated 事件中初始化它。

Template.workflow.onCreated(function() {
   var instance = this;
   instance.projectId = new ReactiveVar(null);
});

当你改变选择的项目时,你应该改变你的 react 变量。

Template.workflow.events({
   'change #project': function(){
      Template.instance().projectId.set($("#project").val());
});

每个工作流都需要有带有项目 ID 的字段。你得到这样的工作流列表

{{#each getWorkflows}}

还有获取工作流列表的助手:

Template.workflow.helpers({
    getWorkflows: function() {
       var id = Template.instance().projectId.get();
       return Workflow.find({projectId: id});
    },

    ...// another helpers

})

所以,当你改变项目的形式时,工作流列表也会改变,因为它依赖于 react 变量。您也可以只订阅需要的工作流对象,而不是所有集合。 我希望这对某人有帮助。

关于javascript - 使用集合过滤事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384624/

相关文章:

mongodb - 为什么将 ElasticSearch 与 Mongodb 一起使用?

javascript - MongoDB/ExpressJS -- 当 ObjectID 包含在变量中时,通过 _id 删除文档

javascript - Mongodb Nodejs : return undefined after callback of an exported function

javascript - 为什么 JQuery .html() 不适用于单个 div 标签?

javascript - HTML5 Canvas globalAlpha 不工作

javascript - jquery 显示相同高度和宽度的图像

javascript - 当我选择同一标签的新复选框时,第二个标签的复选框不会取消选择选项

javascript - JQuery 位置选择器 - 通过选择菜单更新纬度和经度

javascript - d3.js 具有上一个和下一个数据值的移动平均线

javascript - 排序映射,其中 value 是具有多个值的对象