9

I have a handlebars template like this:

<script type="text/x-handlebars" data-template-name="sections">
  {{#each section in controller}}
    {{#linkTo "section" section}} {{ section.label }} {{/linkTo}}
  {{/each}}
</script>

and everything works fine. My model object looks like this:

App.Section = DS.Model.extend({
 sectionDetail: DS.attr('number'),
 label: DS.attr('string'),
 cssClass: DS.attr('string')
});

and I would like to use the "cssClass" property inside the "#linkTo" helper. Now, how can it be done (syntactically)?

I tried this, but this obviously does not work, because using {{section.cssClass}} does not render the value of section.cssClass but the bare string "{{section.cssClass}}".

<script type="text/x-handlebars" data-template-name="sections">
  {{#each section in controller}}
    {{#linkTo "section" section class="{{section.cssClass}}"}} {{ section.label }} {{/linkTo}}
  {{/each}}
</script>

I can't find a solution that does work, could someone point me in the right direction here, or it's simple not possible to achieve what I want to do? Should I construct the links differently?

2
  • 1
    I haven't personally used the #linkTo helper, but generally in views you should assign classes with classNames, or in this case classNameBindings. {{#linkTo "section" section classNameBindings="section.cssClass"}} Commented Jan 29, 2013 at 23:38
  • Thank you :) {{#linkTo "section" section classNameBindings="section.cssClass"}} did it!! Commented Jan 29, 2013 at 23:43

2 Answers 2

19

For anyone else stumbling here, the solution is to use classNamesBindings.

<script type="text/x-handlebars" data-template-name="sections">
  {{#each section in controller}}
    {{#linkTo "section" section classNameBindings="section.cssClass"}} 
      {{section.label }}
    {{/linkTo}}
  {{/each}}
</script>
Sign up to request clarification or add additional context in comments.

Comments

-1

Yep, I had this:

<input type="checkbox" {{bind-attr class=":toggle isLiked:toggleHighlight"}}>

And needed to do this, make it into an input helper, but couldn't figure how to close the element (novice):

{{input type="checkbox" checked=isLiked}}

And so classNameBindings to the rescue:

{{input type="checkbox" checked=isLiked classNameBindings=":toggle isLiked:toggleHighlight"}}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.