12

私は Meteor を使い始めており、ネストされたタグ グループを含めるようにtodo の例を調整しています。各タググループの各名前と、その各グループ内のタグのリストを出力する次の HTML があります。

  <template name="tag_filter">
    {{#each tag_types }}
      {{ tag_name }}
      {{#each values }}
        <div data-taggroup="{{ ../tag_name }}">
        {{ name }} ({{ count }})
        </div>
      {{/each}} 
    {{/each}}
</template>

私の質問は次のとおりです。タグのクリックのイベント ハンドラーを調整して、親グループの値にアクセスするにはどうすればよいtag_nameですか? (つまり、外側の each ループからのデータ)。

現在、私は以下のコードを持っていますが、 object はとへのthisアクセスのみを許可します。namecount

Template.tag_filter.events({
  'mousedown .tag': function () {
    console.log('tag mousedown', this);
    // How do I get the value of tag_name?
  }
});

ご覧のとおり、ハンドルバーの親パスを使用して名前を含む属性を追加しましたdata-taggroupが、イベント ハンドラー内から属性にアクセスする方法がわかりません。

この質問は関連していると思いますが、OPの解決策がわかりません(Coffeescriptを使用していないためです)。関連するクローズド Meteorの問題もあります。

4

3 に答える 3

10

親データにアクセスするための解決策を見つけました:

Template.nestedTemplate.events({
    'click a.class':function(event,template){
        var parentID = template.data._id;
        console.log(parentID);
    }
});

.events ハンドラー関数は、イベントに関する情報を含むオブジェクトである event と、ハンドラーが定義されているテンプレートのテンプレート インスタンスである template の 2 つの引数を受け取ります。これを理解するのに本当に長い時間がかかりました。ハンドルバー ソリューションは使用しないでください。データが表示されます。

于 2013-03-09T04:34:19.993 に答える
3

親テンプレート データを取得できるかどうかはわかりませんが、イベント ハンドラーで DOM 要素にアクセスできます: event.currentTargetはクリックされた要素を取得します。次に、jQuery を使用して属性にアクセスします。必要に応じて、event.currentTarget.parentNodeは DOM で親要素を取得します。

例: タグ クラスをどこに配置したかわかりませんが、data-taggroup が定義されている div のクラスだとしましょう。次に、次を使用してタグ名を取得できます。

$(event.currentTarget).attr('data-taggroup')
于 2012-10-26T21:33:15.327 に答える
0
"click selected":function(e){
    // this._id
   var doc_id = $(e.currentTarget).parent().parent().attr("uid")
   console.log(doc_id) 
},
//specify the each id in the div above the nearest #each
//this will work in events but not in helpers`
于 2016-04-20T10:23:57.007 に答える