gpt4 book ai didi

javascript - 将指令的功能合并到 Angular 表单验证中

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

我有两个相关的问题:

首先:我有以下指令,其目的是验证input[type=file]是否有效,但我不知道它是如何实现的最不重要的是,实际代码的含义是:

angular.module('sccateringApp')
.directive('fileModel', ['$parse', function($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
});
}
};
}]);

就像我说的,我不知道上面的代码实际上是做什么的,我从我复制的论坛得到的解释是它验证了输入类型文件。它是否正确? (到目前为止,我还无法验证它是否有效,因为它不适用于我目前用来验证表单的代码)。

第二:使用下面的表单,使用 Angular 表单验证,在表单内的实际输入与验证规则匹配之前不允许单击提交按钮(输入类别的名称) ,描述的最大长度为 144 个字符)。我将该指令包含在文件输入中,但是表单的实际 ng-model 会忽略输入类型文件中所需的内容,仅验证前两个输入是否满足规则。

这是我的表格:

<form method="post" role="form" name="newCategoryForm" ng-submit="submitForm()" enctype="multipart/form-data" novalidate>
<div class="row">
<div class="row">
<div class="col s12">
<div input-field>
<input type="text" name="cat-name" id="cat-name" ng-class="{ 'ng-invalid' : newCategoryForm.catname.$invalid && !newCategoryForm.catname.$pristine }"
ng-model="catname" required>
<label>Nombre</label>
</div>
</div>
</div>
<div class="row">
<div class="col s12">
<div input-field>
<textarea class="materialize-textarea" name="cat-description" id="cat-description" length="144"
ng-model="catdescription" ng-maxlength="144" required></textarea>
<label>Descripción</label>
</div>
</div>
</div>
<div class="row">
<div class="col s12">
<h6>Imagen de Fondo</h6>
<div class="file-field input-field">
<div class="btn pink darken-2 waves-effect waves-light">
<span>Archivo</span>
<input type="file" name="cat-bgimg" id="cat-bgimg"
file-model="variable" required>
</div>
<div class="file-path-wrapper">
<input class="file-path" type="text">
</div>
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-large pink darken-2 waves-effect waves-light center-button" ng-disabled="newCategoryForm.$invalid">Crear Categoría</button>
</form>

前两个输入得到正确验证,第三个输入(文件输入)没有得到正确验证,我真的不知道为什么,因为该指令包含在输入中(我 native 知道,ngModel 不验证文件输入) 。

关于如何解决这个问题有什么想法或建议吗?我对 Angular 真的很陌生,所有的教程几乎都没用。我拥有 5 年 jQuery 工作经验,向 Angular 的过渡并不容易。

最佳答案

上面发布的指令用于使提交获取 <input type="file"></input> 中找到的数据。 。

此外,应该在 Controller 中初始化一个变量,以便将表单内找到的值复制到该变量,然后需要将该变量作为 ng-submit="submitForm() 内的参数发送。 。

示例:

angular.module('sccateringApp')
.controller('newSubcategoryController', function (httpcalls, $scope) {
...
$scope.subcategory = [];
...
$scope.submitForm = function(subcategory){
...
$scope.request.insertSubcategory(subcategory);
}
});

表单中的每个 ng-model 都是:

<input type="text" ng-model="category.name">

以便 Controller 中找到的类别变量获取该值。

关于javascript - 将指令的功能合并到 Angular 表单验证中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905665/

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