aureliaaurelia-templating

In Aurelia, can a slot be used in a repeat.for binding?


I'd like to create a custom element that loops through an array and applies the to each item in the array. For example, the view template of the custom element would contain something like:

<div repeat.for="i of items">
  <div with.bind="i">
    <slot></slot>
  </div>
</div>

When I remove the repeat.for and with.bind attributes, the slot displays a single time. Is there a way to make it repeat for each item in the list?


Solution

  • No, you cannot use slots with repeat.for or bind today. To do this you have to use replaceable parts. For example:

    <div repeat.for="i of items">
      <div with.bind="i">
        <template replaceable part="content"></template>
      </div>
    </div>
    

    Usage:

    <my-component>
      <template replace-part="content">Some Content - ${somePropertyOfI}</template>
    </my-component>
    

    Runnable example: https://gist.run/?id=29aa1c1199f080c9ba0e72845044799b