Я получаю Error: Grid argument is not a Grid object
только в prod (он работает в dev) после минификации javascript.
Я углубился в код ui.grid и сначала подумал, что это ошибка, но, поскольку никто не жаловался, я подумал, что делаю что-то не так.
Причина, по которой я думаю, что это ошибка, вызванная минификацией:
Ошибка возникает здесь, где n в dev является функцией типа «Сетка», но после минимизации она имеет тип «h».
if ("Grid" !== t.type(n))
throw new Error("Grid argument is not a Grid object");
t.type получает тип функции, используя Function.prototype.toString. Имя типа было изменено во время минификации и не будет равно «Сетка», как того требует приведенное выше условие.
h.type = function(e) {
var t = Function.prototype.toString.call(e.constructor);
return t.match(/function (.*?)\(/)[1]
Я использую Rails 4, последнюю версию angular и ui.grid.
Хотя я думаю, что это не имеет значения, вот мой код:
Вид:
<div ng-controller="SummonersCtrl">
<p>
<strong>Name:</strong>
<span>{{summoner.name}}</span>
</p>
<p>
<strong>Region:</strong>
<span>{{summoner.region}}</span>
</p>
<div id="rune-statistics">
<h2>Runepage Usage</h2>
<p>Stats of {{summoner.sumOfGames()}} games.</p>
<div ui-grid="gridOptions" class="stats-grid"></div>
</div>
</div>
Ctrl:
runestats = angular.module('runestats')
summonersCtrl = runestats.controller 'SummonersCtrl'
, ['Summoner', 'backendApi', '$rootScope', '$scope', '$http', '$log'
, (Summoner, backendApi, $rootScope, $scope, $http, $log) ->
$scope.summoners = []
$scope.gridOptions =
data: 'summoner.total_runestats'
backendApi.getSummoners().success (data) ->
$scope.summoners = data
$rootScope.$on 'summonerSearched', (event, name, region) ->
backendApi.getSummoner(name, region).success (data) ->
$scope.summoner = new Summoner(data)
$rootScope.$broadcast('summonerFound', name, region)
]
Это баг, или я что-то не так делаю?