我需要能够暂时保留尚未完全验证的数据,然后在准备将其永久化时强制执行验证。但是Angular阻止了这一点。
我有一个表格。用户可以saveDraft()
使用表单的早期版本,这些版本将保留在服务器上。然后,当用户准备就绪时,他们便可以使用submit()
该表单,该表单将使用不同的标记来保留该表单,从而开始对该数据的实际处理。
我遇到的问题是Angular的内置验证。当用户将一些数据输入到带有验证的输入中时,该数据将缓存在$viewValue
属性中。但是,如果验证失败,它将永远不会复制到该$modelValue
属性,这是对$scope
我将输入绑定到的实际属性的引用。因此,“无效”值将不会保留。
但是我们需要坚持下去。稍后,当用户commit()时,我们将迫使其纠正验证失败。此外,我们也没有办法知道用户是否会saveDraft()
或submit()
在视图/控制器的特定实例,所以我们不能设置的意见和验证不同事前。
我的想法是,我们需要以某种方式迭代表单元素,并使Angular以某种方式使数据通过。但是我找不到一种灵活且可扩展的方法。
我已经尝试过设置$scope.formName.inputName.$modelValue = $scope.formName.inputName.$viewValue
,但是这似乎使众神不安,因为随后两个值都被清空了。
我尝试使用$scope.formName.inputName.$setValidity('', true)
,但这只会更新UI状态。它永远不会触及$modelValue
。
我可以成功使用,$scope.model.boundPropertyName = $scope.formName.inputName.$viewValue
但这感觉非常必要,并且不允许boundPropertyName
和的标识符之间有任何差异inputName
。换句话说,您要么为所有表单控件都需要单独的功能,要么需要依赖命名约定。两者都很脆。
所以…我怎样才能$modelValue
优雅地更新它?和/或,是否有另一种更好的方法来获得相同的结果,从而有时我可以坚持进行验证,而有时可以坚持进行验证?
我正在考虑但不满意的其他选择:
$modelValue
无论其有效性如何。但是,当应该有一条更优雅的道路时,这会破坏框架。在此处查看CodePen。
(旁注:Angular似乎正在根据验证器在 两个方向上
对数据进行过滤。如果在模型上为formData.zip设置默认值‘1234’,则该字符不足以验证字符,Angular不会这样做。甚至不显示它。它永远不会到达初始$viewValue
。)
从Angular 1.3版本开始,可以使用以下解决方案:
您可以ng-model-options="{ allowInvalid: true }"
在模型的输入字段中设置要保留无效属性的位置。
allowInvalid:布尔值,指示可以使用未正确验证的值来设置模型,而不是将模型设置为未定义的默认行为
https://docs.angularjs.org/api/ng/directive/ngModelOptions
然后,当您准备向用户显示其验证错误时,您可以按照自己的方式进行操作。只要记住要给您的输入和表单name
属性,以便您可以在自己的范围内引用它们即可。
例如 if($scope.myFormName.my_input_name.$invalid) { ... }
相关教程:http :
//blog.thoughtram.io/angularjs/2014/10/19/exploring-angular-1.3-ng-model-
options.html
我正在编写一个独立的java应用程序,从Maven项目构建它并通过调用jar文件执行。 在应用程序中,我有一个实体管理器,它使用在我的持久性中定义的持久性单元。xml是独立的(事务类型=“RESOURCE\u LOCAL”) 实际的实体注释类来自另一个项目,因此被添加到pom中。xml文件作为依赖项。 问题是持久性。包含实体类的项目的xml覆盖了实际独立应用程序的持久性。构建jar时,jar目标文
我用这个函数从后端获取数据 和显示JSON,如下所示 我需要的是具有的数据,为此我创建 这部分代码显示为空。 请问如何使用
显示相同数据的多个组件 访问数据的单一服务 现在,当通过Observables接收数据时,我有两种选择: a)订阅observable以获取一次数据,并再次订阅以获取更新
问题内容: 我正在尝试使用ModelForm添加数据。它工作正常,除了ForeignKey下拉列表显示所有值,我只希望它显示与已登录用户相关的值。 这是我要添加的记录ExcludedDate的模型: 这是类别的模型,该表是包含我想由用户限制的关系的表: 最后,表单代码: 如何获取仅显示类别子集的表单,其中category.user等于登录用户? 问题答案: 您可以在 init中* 自定义表格 *
通常所有的默认配置都可以。但是现在我需要将我的应用程序部署到Weblogic 12.2服务器,我面临一些关于持久性的问题。 我只是想知道如何设置持久化单元的JPA EntityManagerFactory不默认。因为通过启动应用程序,我可以看到这些日志: 所以我不确定weblogic是使用默认的持久化单元(eclipselink)还是真正的Hibernate。所以我想在我的应用程序中的任何地方明确
使用Struts 1.3 我有一个带有用户名、密码的登录表单,还有一个带有一些值的下拉列表,比如English、Deutsh等等。提交表单时,需要从下拉列表中保留最后一个值。 遵循代码示例。 JSP代码: 现在,此JSP代码生成以下下拉列表: struts配置。xml 问题: 现在的问题是,当我输入无效的用户名、密码并选择德语时。最后选择的语言应保持不变,并显示在下拉列表中。但下拉列表已初始化,值