gpt4 book ai didi

javascript - Angular.js - 在指令中设置 ng-pattern 时 ngModel 值未定义

转载 作者:行者123 更新时间:2023-11-29 16:06:14 25 4
gpt4 key购买 nike

可能已经回答了类似的问题(ng-pattern + ng-change),但所有回复都无法解决此问题。

我有两个用于创建表单输入的重叠指令,一个用于控制名称、标签、验证器等的父指令和一个用于设置模式和输入类型特定内容的子指令。

但是,当设置模式时,当 ng-pattern 返回 false 时,我的模型上的值被设置为未定义。

指令:

<input-wrapper ng-model="vm.customer.phone" name="phone" label="Phone number">
<input-text type="tel"></input-text>
</input-wrapper>

生成的 HTML:

<label for="phone">Phone number:</label>
<input type="text" name="phone"
ng-model="value"
ng-model-options="{ updateOn: \'blur\' }"
ng-change="onChange()"
ng-pattern="/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/">

JS:

angular.module('components', [])
.directive('inputWrapper', function() {
return {
restrict: 'E',
require: 'ngModel',
scope: true,
link: function (scope, element, attrs, ngModel) {
scope.name = attrs.name;
scope.label = attrs.label;

scope.onChange = function () {
ngModel.$setViewValue(scope.value);
};

ngModel.$render = function () {
scope.value = ngModel.$modelValue;
};
}
}
})
.directive('inputText', function() {
return {
restrict: 'E',
template: '<label for="{{name}}">{{label}}:</label><input type="text" name="{{name}}" ng-model="value" ng-model-options="{ updateOn: \'blur\' }" ng-change="onChange()" ng-pattern="pattern">',
link: function (scope, element, attrs) {

if (attrs.type === 'tel') {
scope.pattern = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/;
}
}
}
});

angular.module('app',['components'])
.controller('ctrl',function($scope){
var vm = this;

vm.customer = {
phone: '010203040506'
};
});

我做错了什么?

用例代码笔:https://codepen.io/Yosky/pen/yVrmvw

最佳答案

默认情况下,如果验证器失败,angular 将未定义的值分配给 ng-model,您可以按如下方式更改此设置:

 <div ng-model-options="{ allowInvalid: true}">

read here for detail docs

关于javascript - Angular.js - 在指令中设置 ng-pattern 时 ngModel 值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com