Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 解析指令中绑定的ng模式时,angular js中出现$parse:ueoe错误_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 解析指令中绑定的ng模式时,angular js中出现$parse:ueoe错误

Angularjs 解析指令中绑定的ng模式时,angular js中出现$parse:ueoe错误,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个指令,它绑定一个字符串作为指令本身中的ng模式应用,但是当呈现它时,它会给出一个UEOE错误 该指令的定义如下: myApp.directive('myDirective', Directive); function Directive() { var directiveDefinition = { restrict: 'E', require: 'ngModel', replace: true, transclu

我有一个指令,它绑定一个字符串作为指令本身中的ng模式应用,但是当呈现它时,它会给出一个UEOE错误

该指令的定义如下:

myApp.directive('myDirective', Directive);

function Directive() {
    var directiveDefinition = {
        restrict: 'E',
        require: 'ngModel',
        replace: true,
        transclude: false,
        link: function (scope, element, attrs, ngModelCtrl) {          

        },
        scope: { 
            myPattern:'@',
           },

        templateUrl: 'template.htm'
    };
    return directiveDefinition;
} 
带模板

<div>
   <form  name=myForm>
        <input type='text' ng-model='ngModel'
               ng-model-options="{ updateOn:'blur', allowInvalid: true }" 
               ng-pattern="{{myPattern}}" /> 
    </form>        
</div>

它在视图中的用途如下:

<my-directive ng-model="someValue" my-pattern="[a-z]+"></my-directive>

给出错误

angular.min.js:2错误:[$parse:ueoe]

如果我将正则表达式更改为没有“特殊”字符,这很好,但是对于任何具有复杂正则表达式的内容,它都不起作用,例如,我为正则表达式[a-Za-z0-9]获得一个lexerr+

有没有一种方法可以将这样一个正则表达式传递给一个指令,以便成功地解析它


顺便说一句,ng模式工作正常,但我怀疑看到的其他意外行为是连锁效应。

从文档中可以看出,ng模式在大多数情况下都需要角度表达式,而不是插值ex
ng pattern=“myPattern”
。如果使用插值,则最终结果必须是regex literal form ex.
/abc/

发件人:

该值是AngularJS表达式: 如果表达式的计算结果为RegExp对象,则直接使用它

如果表达式的计算结果为字符串,则在将其包装为^和$字符后,它将转换为RegExp。对于 实例“abc”将转换为新的RegExp(“^abc$”)

如果该值是RegExp文本,例如ngPattern=“/^\d+$/”,则直接使用该值

ngPattern

必须计算为RegExp或字符串的AngularJS表达式 可解析为RegExp或RegExp文本。详见上文 细节

ng pattern=“[a-z]+”
生成$parse:ueoe错误。为什么您希望
my pattern=“[a-z]+”
的行为会有所不同?