2014-10-29 58 views
2

你会如何在一个表单中实现ng-required和角度ui-ace?ng-angular with ui-ace

这是我的标记:

<form name="scriptform"> 
    <div name="script" 
     ui-ace="{ onLoad: configureAce }" 
     ng-required="" 
     ng-model="someCodez"> 
    </div> 
</form> 

{{ scriptform }} 

出似乎因为{{scriptform}}上面没有打印出任何形式的验证ACE是不挂钩的角度表单验证框架, 盒子 'someCodez'为空时出错。

+0

目前我有一个非常丑陋的工作,围绕使用ace“onChange”cb。 – marko 2014-10-30 07:32:25

回答

2

看着文档,我认为ng-required属性只与<input>元素一起工作,所以这种方法可能是不可能的。

但是,您可以通过更改表单组件本身的$setValidity来实现类似的结果。例如,当用户不再改变的王牌编辑内容:

$scope.configureAce = function() { 
    return { 
    onLoad: function (editor) { 
     editor.on('blur', function() { 
     if (/* test validity of someCodez */) 
      $scope.scriptForm.script.$setValidity('scriptSyntax', true); 
     else 
      $scope.scriptForm.script.$setValidity('scriptSyntax', false); 
     $scope.$digest(); 
     }); 
    } 
    }; 
}; 

$setValidity第一个参数是一个自定义字符串可以检查和F.E.用于向用户显示错误状态。查看相关文档:https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

+0

是的这几乎是我在做什么。编辑器事件似乎是在当前版本中将其挂钩的唯一方式。 thx为一个很好的答案! – marko 2014-12-13 12:52:41