我是 Angular js 的新手,我刚开始在Angular JS做一个项目。 让我简单介绍一下我的申请。我有一个json数据,其中包含一些节点的数据,这些节点构成一个层次结构。我用来显示这些数据。因此,它将一次占用一个节点并根据其中的数据进行显示。我需要根据数据显示一个选择字段。
如果用户未在字段中选择值,则在我需要显示错误消息之前,一切正常。它应该显示在该特定节点上。为此,我应该识别每个节点(,因为这是一个模板)。我将数据中的id映射为select标记的名称,根据需要创建标记并写入显示错误消息的span。
此范围将根据条件
显示$ error.required
代码段如下。
<form class='css-form form-search' name="myForm" novalidate>
......
<script type="text/ng-template" id="mynodetemplate">
........
<select name="{{node.id}}" ng-model="node.attributeId" ng-options="attribute.id as attribute.name for attribute in attributes" ng-show ="node.showData" required>
<option value="">Select an Attribute</option>
</select>
<span ng-show=”myForm.node.id.$error.required" style="text-align:center; color:red">Please select</span>
'''''''
</script>
..........
<div ui-tree id="tree-root">
<ol ui-tree-nodes ng-model="nodes">
<li ng-repeat="node in nodes” ui-tree-node ng-include="mynodetemplate”></li>
</ol>
</div>
..........
但我无法在此提供正确的表达方式 - ng-show =“myForm.node.id。$ error.required”
我已经尝试了很多方法来评估正确的表达方式,但它没有用。
任何帮助表示感谢。
提前致谢。
答案 0 :(得分:0)
就像在JavaScript中一样,如果您希望对象属性的名称为node.id
,则不能只写
object.node.id
因为它引用了对象的属性id
的属性node
。所以你被迫使用
object['node.id']
所以你的表达应该是
ng-show="myForm['node.id'].$error.required"
但我同意charlieftl的评论。通过选择包含点的名称,您将使自己的生活变得困难。只需将其重命名为nodeId
,即可使用
ng-show="myForm.nodeId.$error.required"
编辑:
现在该名称实际上是一个动态名称。所以,在JavaScript中你会使用
object[node.id]
在表达式中,由于范围是隐式的,您可以使用
ng-show="myForm[node.id].$error.required"
答案 1 :(得分:0)
我使用了here
发布的解决方案我所做的是,我将检查模态中是否存在值或其长度。
答案中的示例摘录如下
<input ng-model="somefield">
<span ng-show="!somefield.length">Please enter something!</span>
<span ng-show="somefield.length">Good boy!</span>
感谢@Supr的回答。
我不知道为什么表单验证不起作用:(