Можно ли использовать Angular-UI-Grid-Edit с контроллером в качестве синтаксиса?

Я написал все свое приложение Angular, чтобы избежать использования $scope, используя вместо этого синтаксис «контроллер как», чтобы упростить переход на Angular 2.0 и потому, что я считаю, что это более актуальная практика.

Но я не могу понять, как избежать использования $scope с событием gridApi.edit.on.afterCellEdit ui-grid, которое задокументировано следующим образом:

gridApi.edit.on.afterCellEdit(scope,function(rowEntity, colDef){})

Parameters

rowEntity – {object} – the options.data element that was edited
colDef – {object} – the column that was edited
newValue – {object} – new value
oldValue – {object} – old value

Основываясь на документации, я сделал это, и это работает (после внедрения $scope в контроллер):

ctrl.tableOptions.onRegisterApi = function(gridApi){
  ctrl.gridApi = gridApi;
  gridApi.edit.on.afterCellEdit( $scope, function(rowEntity,colDef, newValue, oldValue) {
    //save stuff here 
  });
};

но, как вы можете видеть, мне пришлось использовать $scope в обратном вызове события, иначе я получаю сообщение об ошибке, сообщающее мне, что scope.$on не является функцией. Можно ли НЕ использовать $scope? Я пробовал «это», но, похоже, ему нужна только $scope.

Очевидно, я не совсем понимаю, что делаю, и не могу найти много документации по afterCellEdit, кроме это и тому примеру, которому я рабски следовал выше, поэтому обращаюсь к вам за помощью. Тысячи строк кода без $scope, кажется позорным упасть на последнем препятствии!

заранее спасибо

Джон


person John    schedule 18.03.2015    source источник


Ответы (2)


Решение состоит в том, чтобы вместо этого использовать null:

gridApi.edit.on.afterCellEdit(null,function(rowEntity, colDef, newValue, oldValue)

Оттуда вы всегда можете получить доступ к контроллеру через переменную, которую вы установили для него, например, vm, и получить доступ к большей части того, что будет содержать область.

person ralphowino    schedule 09.09.2015

У меня была та же проблема (... избегайте использования $scope с gridApi ui-grid...), и я сделал базовое приложение на plunker с разбиением на страницы ui-grid. Надеюсь, это поможет. http://plnkr.co/edit/sQos8J?p=preview

ng-click="main.gridApi2.pagination.previousPage()
person user4698383    schedule 21.03.2015
comment
Вы когда-нибудь выясняли, как использовать обратные вызовы ui-grid (такие как afterCellEdit или saveRow, не вводя в них $scope? Я могу жить с $scope (теперь он в моем приложении и работает нормально), но было бы неплохо быть $scope бесплатно, как будто мы должны быть под Angular 2.0 - person John; 25.03.2015