UI Grid keep selection after refresh

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/3.2.9/ui-grid.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/3.2.9/ui-grid.css">
<div ng-controller="MyCtrl as controller">
    <button ng-click="controller.refreshData()" type="button">
    Refresh
  </button>

  <div ui-grid="controller.assetListGrid" ui-grid-selection></div>


</div>

JavaScript

var myApp = angular.module('myApp', ["ui.grid", "ui.grid.selection"]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

myApp.controller("MyCtrl", function($scope) {
  var self = this;
  $scope.name = 'Superhero';

  self.assetListGrid = {};

  self.gridOptions = {
    enableFiltering: true,
    enableGridMenu: true,
    enableColumnMenus: false,
    enableRowSelection: true,
    enableSelectAll: false,
    multiSelect: false,
    enableHorizontalScrollbar: 1,
    columnDefs: [{
      name: 'assetId'
    }, {
      name: 'reference',
      enableHiding: false,
      width: 250,
      resizeable: true
    }],
    onRegisterApi: function(gridApi) {
      self.assetGridObject = gridApi;

      // register the onRowSelect Function here
      //this.assetGridObject.selection.on.rowSelectionChanged(null, function(row) {
      //   if (row.isSelected)
      // });
    },
    appScopeProvider: self
  }

  self.initGrid = function() {
    self.assetListGrid = self.gridOptions;
    self.assetListGrid.data = "controller.gridAssets"
  }

  self.loadInitData = function() {
    self.gridAssets = [{
      assetId: 1,
      reference: "Dawood"
    }, {
      assetId: 2,
      reference: "Dawood 2"
    }, {
      assetId: 3,
      reference: "Dawood 3"
    }, {
      assetId: 4,
      reference: "Dawood 4"
    }, ]
  }

  self.refreshData = function() {
    console.log("Data refresh")

    self.gridAssets = [{
      assetId: 1,
      reference: "Refresh"
    }, {
      assetId: 2,
      reference: "Refresh 2"
    }, {
      assetId: 3,
      reference: "Refresh 3"
    }, {
      assetId: 4,
      reference: "Refresh 4"
    }, ]
  }

  self.initGrid();
  self.loadInitData();

});