angular schema-form modal .... $ scope的问题

Rep*_*ile 6 javascript angularjs angular-schema-form

Plunker

此plunker允许您编辑网格中的行.我已经创建了一个基于RowEditCtrl的新方法来插入一个新行但是在验证方面遇到了麻烦.

当我插入一个新行时,表单是"原始且有效".在insert方法中,我需要调用$scope.$broadcast('schemaFormValidate')哪个将验证表单并且form.$valid将为false.理想情况下,我想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);
  }
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*hey 0

我能够通过传递到的控制器来$scope访问。请在此处查看我的原始 plunkr 分支:http://next.plnkr.co/edit/NiwF12BLJQyD6CkuRowEditCtrl$scopeeditRow$modal.open

以下是相关变更:

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

...

function RowEditCtrl($scope, 
Run Code Online (Sandbox Code Playgroud)

...

function save() {
    console.log($scope.$broadcast('schemaFormValidate'));
Run Code Online (Sandbox Code Playgroud)

当我在模态函数中执行此console.log操作时,它似乎正在工作。或者,至少是定义的并且 $broadcast 可调用。如果这不能很好地解决问题,我很抱歉,我不熟悉。$scope.$broadcast('schemaFormValidate')save$scopeschemaFormValidate