javascript - Issue with subscriptions on multiple instances of a template -


here scenario. have template contains #each loop , renders instance of particular template, setting data context on each template per docs.

<template name = 'live'> <div class = 'row'>     {{#each runways}}         <div class = 'col-md-2'>             {{> runway_panel}}         </div>     {{/each}} </div>  </template> 

and helper backing it:

template.live.helpers({     runways: function(){         return runway_data.find();     } }); 

this works, issue follows. each live_event_log instance has template level subscription subscribes publication takes _id parameter of data context, so:

template.runway_panel.oncreated(function(){     var instance = this;     instance.autorun(function(){         var subscription = instance.subscribe('runway_status', this.data._id);     });      instance.status = function(){         return runway_status.find();     }  }); 

this publication:

meteor.publish('runway_status', function(runway){       if(this.userid){         //retrieve last know status given runway          return runway_status.find({runway: runway});       }  }); 

this when falls apart, on browser console:

 [log] exception in queued task: http://localhost:3000/client/views/live/runway_panel.js?4efaac87b39527d3dfd3d65a174520f9bce3c565:4:73 (meteor.js, line 888)_withtemplateinstancefunc@http://localhost:3000/packages/blaze.js?a5c324925e5f6e800a4c618d71caf2848b53bf51:3476:16 http://localhost:3000/packages/blaze.js?a5c324925e5f6e800a4c618d71caf2848b53bf51:1864:54 _withcurrentview@http://localhost:3000/packages/blaze.js?a5c324925e5f6e800a4c618d71caf2848b53bf51:2197:16 

as comment out subscription line else works, missing obvious here? have multiple subscriptions same publication?

thank you! :)

solution

thanks jeremy s. input , sleep after night shift i've figured out without autorun. here goes posterity:

template.runway_panel.oncreated(function(){     var self = this;     self.subscribe('runway_status', this.data._id); }); 

should have tried getting sleep before trying again!

the problem this.data._id in subscription, right scoped innermost function. want instance.data._id (which nonreactive wouldn't need autorun) or template.currentdata() (which reactive).

template.runway_panel.oncreated(function(){     var instance = this;     instance.autorun(function(){         var data = template.currentdata();         var subscription = instance.subscribe('runway_status', data._id);     }); }); 

also note in publication, should mark this.ready() if this.userid undefined. that's not source of error.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -