dman
dman

Reputation: 11073

Refresh dom-repeat on a change of sort mode - no mutation needed to array set for sort

I have a dom-repeat template and I want to be able to sort the list real time. So, the way I went about it is the way below. However, I need a way to refresh that dom-repeat when a user selects a new selection from paper-menu.

Typically, a modification to the result set array would do it. But in this case, a change in sorting the list doesn't require adding or removing anything in that array set(therefore no array mutation).

How could I get <template is="dom-repeat" items="[[pic.results173]]" as="url" sort="_sortList"> to refresh?

<paper-menu-button>
  <paper-button class="dropdown-trigger" raised>
    <iron-icon icon="visibility"></iron-icon>
    <span>View By</span>
  </paper-button>
  <paper-menu id="viewMode" class="dropdown-content" selected="0">
    <paper-item>Most Recent</paper-item>
    <paper-item>Least Recent</paper-item>
    <paper-item>Highest Price</paper-item>

  <template is="dom-repeat" items="[[pic.results173]]" 
    as="url" sort="_sortList">

  _sortList: function(first, second) {
    var el = this.$.viewMode;
    var listMode;
    switch(el.selected) {
      case 0:
        listMode = this._mostRecent(first , second);
        break;
    }
    return listMode;
  },

Upvotes: 2

Views: 2216

Answers (1)

akc42
akc42

Reputation: 5001

The developers guide has your answer. Give your template an id (say id="list") and call this.$.list.render()

Upvotes: 8

Related Questions