Bind to simple array of strings

2019-01-22 17:04发布

问题:

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.

回答1:

From the documentation, the answer is:

When using a template: ${$data}

When not using a template: $data



回答2:

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.