Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bind to simple array of strings

If I want to bind a template to a plain old array of strings, what do I put in the ${??} expression?

I hope this snippet isn't too short so as to confuse:

<ul data-bind="template: { name: 'authorTemplate', foreach: authors }">
</ul>

where authors is simply ["a", "b", "c"]

<script type="text/x-jquery-tmpl" id="authorTemplate">
    <li>${what_do_I_put_here???}</li>
</script>

I've tried: val value this and this.toString(). The last two displayed [object Object] so I suspect I'm pretty close there.

like image 471
Adam Rackis Avatar asked Aug 30 '11 19:08

Adam Rackis


2 Answers

From the documentation, the answer is:

When using a template: ${$data}

When not using a template: $data

like image 80
Adam Rackis Avatar answered Nov 03 '22 21:11

Adam Rackis


For unnamed array (JSON like: ["value1", "value2"]), it would be:

<ul data-bind="foreach: $root">
 <li data-bind="text: $data"></li>
</ul>

$root keyword does the trick.

like image 50
Nenad Avatar answered Nov 03 '22 20:11

Nenad