2016-09-02 2 views
0

私はMeteorチュートリアルからtodoアプリケーションを構築して、それを続行しています。私はタスクモデルに基づいていくつかのリストを構築していますが、それらに参加する方法はわかりませんし、1つのリストをクリックすると、このリストからすべてのタスクが欲しいと言います。瞬間のために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 } }); 
    }, 

I私の体.html、私はちょうど別々に各項目(リストとタスク)を表示します。しかし、問題は両者の関係をどうやって作るのか分かりません。

私を助けてくれますか?

ありがとうございました

+0

あなたがより良くしようとしていることを理解するのに役立ちます。 「1つのリストをクリックすると、このリストからすべてのタスクが欲しい」とはどういう意味ですか? –

+0

誤解をおかけして申し訳ありません。実際、左側のサイドバーには私のリストアイテムがあり、その後コンテナにはタスクがあります。私はいくつかのリストにタスクを関連させ、私が選択したリストだけが所有するタスクを表示したいと思います。 (リストをクリックして、このリストに関連するタスクを表示してください)ありがとう – guillaumek

+0

私は理解していると思います、ありがとうございます。 –

答えて

1

私はあなたが既にセッションを使用しているのを見ています。基本的には、ユーザーが選択したリストを追跡するSession変数を使用し、その変数でタスクをフィルタリングします。あなたはあなたのリストの名前を表示するあなたの体の

、HTML属性としてリストのIDを追加します。

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

セッション変数にそのIDを保存し、リスト名をクリックするイベントを追加します。

return Tasks.find(
    { listId: Session.get('listId') }, 
    { sort: Session.get("sort_order") } 
); 
:あなたの tasksヘルパーで
Template.body.events({ 
    'click .list-name' (event) { 
    event.preventDefault(); 

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

、セッション変数を使用して、クエリにフィルタを適用

もっと明確なものがあれば教えてください。

+0

このセッション変数を使用して、選択したリスト項目のクラスを追加したり、タスクのカウンタを取得することができますか、それぞれのコレクションで新しい項目を使用する必要がありますか?ありがとうございました – guillaumek

+0

私は助けてくれることを嬉しく思っています、そして、私は問題が何であるかを理解していると思いますが、このページをきれいにするために、別のStack Overflow質問を作成するのが最善でしょう。あなたはおそらく以下の答えを削除するべきです - 答えは質問することではありません。 –

+0

完了、もう一度ありがとうございます – guillaumek

関連する問題