首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角wysiwyg形式验证

角wysiwyg形式验证
EN

Stack Overflow用户
提问于 2016-08-15 18:17:16
回答 1查看 672关注 0票数 1

我正在尝试使用angular-wysiwyg和表单验证。我没有使用标准的form.textArea.$dirty,而是更新了作用域上的一个标志:

代码语言:javascript
复制
$scope.onTextChange = function (value) {
  $scope.textContent = value;
  $scope.isContentDirty = true;
  ...
}

然后我可以使用按钮上的属性:

代码语言:javascript
复制
<button ng-diabled="isContentDirty"></button>

但我更愿意做这样的事:

代码语言:javascript
复制
<wysiwyg name="myTextArea" ng-model="textContent"></wysiwyg>

<button ng-disabled="!form.myTextArea.$dirty></button>

我怎么能让这件事成功呢?

以下是一个与此相关的公开问题:

https://github.com/TerryMooreII/angular-wysiwyg/issues/43

下面是这个指令的文档:https://github.com/TerryMooreII/angular-wysiwyg#usage

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 18:57:22

我找到了一个让我足够高兴的解决方案。事实证明,你可以通过引用来检查任何表格项目的有效性。

myForm.editor.$error

在这里引用“编辑器”表单项上的错误:

代码语言:javascript
复制
<form name="myForm">
    <wysiwyg name="editor"></wysiwyg>
</form>

当您转到指令中的链接步骤时,可以设置$parsers,这基本上允许您在满足某些条件的情况下使表单失效:

代码语言:javascript
复制
angular.module('foo').directive('wysiwyg', function() {
    return {
        restrict: 'E',
        require: 'ngModel', //the 'value' of the form item
        template: 'my template',
        link: function(scope, elem, attrs, ngModel) {

            function checkCustomError(viewValue) {
                valid = viewValue.someCondition === 'someValue';
                ngModel.$setValidity('customError', valid);
                return viewValue;
            }

            ngModel.$parsers.unshift(checkCustomError);
        }
    }
}

错误将出现在formName.directiveName.$error.customError下面

还有其他使ngModel失效的方法,例如将ng-maxlength置于指令中,但我认为这是最有信息的解释方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38960632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档