HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

Nested template variable access in Meteor

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
templatemeteornestedvariableaccess

Problem

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

  • Buckets



  • 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).

HTML:


  {{#each bucket}}
    {{bucket_description}}
    
      {{#each widget}}
        {{widget_description}}
      {{/each}}
    
  {{/each}} 


JS:

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' : '';
  };

  Template.choices.events({
    'change select': function (event) {
      Buckets.update({bucket_name: event.target.id}, {$set: {bucket_contains: event.target.value}});
    }
  });
}

Solution

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.

Context

StackExchange Code Review Q#18120, answer score: 2

Revisions (0)

No revisions yet.