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() {});
this.selectedRow =

  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
        self.assetGridObject.selection.on.rowSelectionChanged(null, function(row) {

          if (row.isSelected) {
            self.assetGridObject.grid.appScope.selectedRow = row.entity;

          }
        });
      },
      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"
      }, ];
debugger
      if (self.selectedRow) {
      
        console.log("Row is...