meteor - Accessing data from outside events callback -
<template name="sidenav">   <ul class='block-items white'>     {{#each blocks}}       <li class='block-item'>         <i class="fa fa-fw fa-folder"></i>         <i class="fa fa-fw fa-folder-open"></i>         <a href='#' class='block-item-link'>           {{name}}      ...      {{/each blocks}} </template>   given this, can access each block-item's id when it's clicked doing
template.sidenav.events({   "click .block-item": function (e, tem) {     //var blockitemid = this._id;   } });   how can borrow same feature other places, onrendered()? take @ following example:
  template.sidenav.onrendered(function() {     this.$('.block-items').sortable({       update: function (e, ui) {         _.each($('.block-item'), function (blockitem) {           // how blockid?         })         console.log("block item rearranged");       }     });   update callback function that's invoked when there change in order of block items in ul list. need way iterate through block items , corresponding mongo id's. how can it?
related documents:
update: "meteor way"
if looking how blaze gets data context events , helpers, turns out there magical blaze.getdata() function takes blaze view or dom object , returns data context. far tell looking @ code, seems tool blaze uses providing data contexts helpers , events.
so in case, use:
  template.sidenav.onrendered(function() {     this.$('.block-items').sortable({       update: function (e, ui) {         _.each($('.block-item'), function (blockitem) {           var context = blaze.getdata(blockitem.get(0));           var blockid = context._id;         })         console.log("block item rearranged");       }     });   original answer
an easy way id of document when working dom manipulation (other blaze events) explicitly set attribute in template, such as:
<template name="sidenav">   <ul class='block-items white'>     {{#each blocks}}       <li class='block-item' id='{{_id}}'>         <i class="fa fa-fw fa-folder"></i>         <i class="fa fa-fw fa-folder-open"></i>         <a href='#' class='block-item-link'>           {{name}}      ...      {{/each blocks}} </template>   this way, can fetch id using jquery's attr method:
  template.sidenav.onrendered(function() {     this.$('.block-items').sortable({       update: function (e, ui) {         _.each($('.block-item'), function (blockitem) {           var blockid = blockitem.attr('id');         })         console.log("block item rearranged");       }     });      
Comments
Post a Comment