угловая схема-форма модальная .... проблемы с $ scope - PullRequest
0 голосов
/ 27 сентября 2018

Плункер

Этот плункер позволяет редактировать строки в сетке.Я создал новый метод на основе RowEditCtrl для вставки новой строки, но у меня возникли проблемы с проверкой.

Когда я вставляю новую строку, форма «нетронутая и действительная».В методе вставки мне нужно вызвать $scope.$broadcast('schemaFormValidate'), который проверит форму, а form.$valid будет ложным.В идеале я хотел бы вызвать эту проверку с ng-show на кнопке сохранения, чтобы кнопка не появлялась до тех пор, пока форма не будет в порядке.

Проблема в том, что я не понимаю или не знаю, как получитьсхема-форма $scope в этом методе RowEditCtrl и не может сделать форму недействительной до того, как пользователь что-либо напечатал.

function RowEditCtrl($modalInstance, PersonSchema, grid, row) {
  var vm = this;
  
  vm.schema = PersonSchema;
  vm.entity = angular.copy(row.entity);
  vm.form = [
    'name',
    'company',
    'phone',
    {
      'key': 'address.city',
      'title': 'City'
    },
  ];
  
  vm.save = save;
  
  function save() {
    // Copy row values over
    row.entity = angular.extend(row.entity, vm.entity);
    $modalInstance.close(row.entity);
  }
}

1 Ответ

0 голосов
/ 06 октября 2018

Я смог получить доступ к $scope в RowEditCtrl, передав $scope в editRow $modal.open контроллер.Смотрите мой форк оригинального планкра здесь: http://next.plnkr.co/edit/NiwF12BLJQyD6Cku

Вот соответствующие изменения:

function editRow(grid, row) {
    $modal.open({
      templateUrl: 'edit-modal.html',
      controller: ['$scope', 

...

function RowEditCtrl($scope, 

...

function save() {
    console.log($scope.$broadcast('schemaFormValidate'));

Когда я делаю console.log из $scope.$broadcast('schemaFormValidate') в модальной функции save, кажется, что она работает.Или, по крайней мере, $scope определено и $ широковещательно.Извиняюсь, если это не решает вопрос достаточно хорошо, я не знаком с schemaFormValidate.

...