簡體   English   中英

流星待辦事項的關聯列表和任務

[英]Associate Lists and Tasks in Meteor todo

我正在從Meteor教程構建todo應用程序,然后繼續進行。 我正在基於任務模型構建一些列表,但是我不知道如何加入它們,並說當我單擊一個列表時,我希望從該列表中獲得所有任務。

目前,我的Tasks.js具有:

    'tasks.insert'(text, privacy, priority, listId) {
        ...

        Tasks.insert({
            text,

            listId: listId,

            owner: this.userId,
            username: Meteor.users.findOne(this.userId).username,
        });
    },

Body.js

   Template.body.events({
      'submit .new-task' (event) {
           event.preventDefault();

    const listId = ???

    const target = event.target;
    const text = target.text.value;
    ...
    Meteor.call('tasks.insert', text, privacy, priority, listId);
    ...
},

然后在哪里顯示它:

Template.body.helpers({
    tasks() {
        const instance = Template.instance();

        if (instance.state.get('hideCompleted')) {
            return Tasks.find({ checked: { $ne: true } }, { sort: Session.get("sort_order") });
        }
        return Tasks.find({}, { sort: Session.get("sort_order")});
    },

    lists() {
        return Lists.find({}, { sort: { createdAt: -1 } });
    },

在我的body.html中,我只是分別顯示每個項目(列表和任務)。 但是問題是我不知道如何建立兩者之間的關系...

你能幫我嗎 ?

非常感謝

我看到您已經在使用Session。 基本上,您將使用Session變量來跟蹤用戶選擇的列表,然后使用該變量過濾任務。

在您要顯示列表名稱的位置,將列表的ID作為HTML屬性添加:

{{#each lists}}
  <a href='#' class='list-name' data-id='{{this._id}}'>
    {{this.name}}
  </a>
{{/each}}

添加事件以單擊列表名稱,將其ID保存到Session變量中:

Template.body.events({
  'click .list-name' (event) {
    event.preventDefault();

    Session.set('listId', event.currentTarget.attr('data-id'))
  }
})

tasks助手中,使用Session變量過濾查詢:

return Tasks.find(
  { listId: Session.get('listId') },
  { sort: Session.get("sort_order") }
);

讓我知道是否有任何更清楚的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM