角模式形式模态.... $ scope问题

时间:2018-09-27 06:38:37

标签: javascript angularjs angular-schema-form

Plunker

此组合键可让您编辑网格中的行。我已经创建了一个基于RowEditCtrl的新方法来插入新行,但是在验证时遇到了麻烦。

当我插入新行时,表单为“原始且有效”。在insert方法中,我需要调用$scope.$broadcast('schemaFormValidate')来验证表单,而form.$valid将为false。理想情况下,我想从保存按钮上的ng-show调用此检查,这样直到表单确定后该按钮才出现。

问题是,我不了解或不知道如何通过此$scope方法获取架构形式RowEditCtrl,并且在用户键入任何内容之前无法使该形式无效。 / p>

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 :(得分:0)

通过将$scope传递到RowEditCtrl的{​​{1}}控制器中,我可以访问$scope中的editRow。在这里查看我的原始朋克叉:http://next.plnkr.co/edit/NiwF12BLJQyD6Cku

以下是相关更改:

$modal.open

...

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

...

function RowEditCtrl($scope, 

当我在模态的function save() { console.log($scope.$broadcast('schemaFormValidate')); 函数中执行console.log的{​​{1}}时,它似乎正在工作。或者,至少定义了$scope.$broadcast('schemaFormValidate')并且$ broadcast可调用。抱歉,如果无法解决问题,我对save并不熟悉。