Code Review Stack Exchange is a question and answer site for peer programmer code reviews. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm a brand new JavaScript guy (currently playing with Meteor) and would love some critique of the following:

The goal: I've got two collections

  1. Buckets
  2. Widgets.

I'm displaying a select for each bucket, populated with an option for each widget.

The goal is simply to mark the appropriate option as selected if the bucket currently contains that widget.

I wrestled with this a bit and came up with what feels hack-ey

-- I'm explicitly passing the bucket's contents as a Handlebars variable. I feel like there's a better way, but not sure how to get 'er done.

Is there a way to get access to the parent template instance's context from a nested template instance? #each widget is being called from within #each bucket but this only gives me access to the child context.

(This works, I'm just trying to learn here).


<template name="choices">
  {{#each bucket}}
    <label for='{{bucket_name}}'>{{bucket_description}}</label>
    <select id='{{bucket_name}}'>
      {{#each widget}}
        <option value="{{widget_name}}" {{selected ../bucket_contains}}>{{widget_description}}</option>


if (Meteor.isClient) {
  Template.choices.bucket = function () {
    return Buckets.find({});

  Template.choices.widget = function () {
    return Widgets.find({}); 

  Template.choices.selected = function (parent) {
    return (this.widget_name === parent) ? 'selected' : '';
    'change select': function (event) {
      Buckets.update({bucket_name:}, {$set: {bucket_contains:}});
share|improve this question
So bucket_contains is a property of Buckets and will be the name of a widget if a widget is assigned to a bucket? – John Syrinek May 16 '13 at 20:49

I've been looking at your code for a few weeks now, the problem is both that there is not a lot to review and there's nothing wrong with it.

Do consider using lowerCamelCasing which is the standard in JS, so bucket_name -> bucketName.

The code seems elegant enough to me.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.