如何调试 ng-pattern
How to debug ng-pattern
我正在使用 ng-pattern
为 Angular 应用程序进行自定义表单验证。
在我的表格中我有:
<form name="jobsForm" id="jobs-form">
<div jobs-form jobs="jobs">
<div ng-form="jobsForm">
<div class="form-group">
<label for="source_path">Source Path:</label>
<input type="text" class="form-control" name="source_path" id="source_path" ng-model="jobs.source_path" ng-pattern="path_regex" required>
<span class="input-error" ng-show="jobsForm.source_path.$invalid.pattern">INVALID PATH</span>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary-red" ng-click="submitJob()">Submit</button>
</form>
在我的控制器中,我定义了 path_regex
:
$scope.path_regex = /^[a-zA-Z]:\(((?![<>:"\/\|?*]).)+(\)?)*$/;
当我尝试时,没有任何效果。调试这个的最佳方法是什么?是否可以放置断点并检查 ng-show
的值?
当然可以。如果您查看 ng-pattern 的 angularJS 文档,然后单击右上角的“查看源代码”按钮,您将看到源代码。这个指令没有太多内容。搜索此代码:
ctrl.$validators.pattern = function(modelValue, viewValue) {
// HTML5 pattern constraint validates the input value, so we validate the viewValue
return ctrl.$isEmpty(viewValue) || isUndefined(regexp) || regexp.test(viewValue);
};
所以你可以看到有一个函数被分配给模型控制器上的 $validators 数组。当数据改变时,所有的 $validators 都会被执行。
现在转到 chrome 调试器,sources 面板并搜索这些代码行之一,并在你未缩小的 angular.js 文件。在同一个函数中放置一个断点,以确保您的正则表达式能够通过测试。
我正在使用 ng-pattern
为 Angular 应用程序进行自定义表单验证。
在我的表格中我有:
<form name="jobsForm" id="jobs-form">
<div jobs-form jobs="jobs">
<div ng-form="jobsForm">
<div class="form-group">
<label for="source_path">Source Path:</label>
<input type="text" class="form-control" name="source_path" id="source_path" ng-model="jobs.source_path" ng-pattern="path_regex" required>
<span class="input-error" ng-show="jobsForm.source_path.$invalid.pattern">INVALID PATH</span>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary-red" ng-click="submitJob()">Submit</button>
</form>
在我的控制器中,我定义了 path_regex
:
$scope.path_regex = /^[a-zA-Z]:\(((?![<>:"\/\|?*]).)+(\)?)*$/;
当我尝试时,没有任何效果。调试这个的最佳方法是什么?是否可以放置断点并检查 ng-show
的值?
当然可以。如果您查看 ng-pattern 的 angularJS 文档,然后单击右上角的“查看源代码”按钮,您将看到源代码。这个指令没有太多内容。搜索此代码:
ctrl.$validators.pattern = function(modelValue, viewValue) {
// HTML5 pattern constraint validates the input value, so we validate the viewValue
return ctrl.$isEmpty(viewValue) || isUndefined(regexp) || regexp.test(viewValue);
};
所以你可以看到有一个函数被分配给模型控制器上的 $validators 数组。当数据改变时,所有的 $validators 都会被执行。
现在转到 chrome 调试器,sources 面板并搜索这些代码行之一,并在你未缩小的 angular.js 文件。在同一个函数中放置一个断点,以确保您的正则表达式能够通过测试。