Rep*_*ile 6 javascript angularjs angular-schema-form
此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)
我能够通过传递到的控制器来$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