简体   繁体   English

Angularjs - 输入的动态名称

[英]Angularjs - Dynamic Name for input

My problem should be quite simple.我的问题应该很简单。 I have an input inside a ng-repeat where the name is inserted dynamically and then I want to validate the input from the form using:我在 ng-repeat 中有一个输入,其中名称是动态插入的,然后我想使用以下方法验证表单中的输入:

{{myForm.{{entry.dynamicField}}.$invalid}} //ERROR Token '{' is not a valid identifier

 <form name="myForm"> <tr ng-repeat="entry in array"> <td> <input name="{{entry.dynamicName}}" /> <span ng-show="myForm.{{entry.dynamicName}}.$invalid">Invalid</span> </td> </tr> </form>

Any help?有什么帮助吗?

You will have to use ng-model in order to bind your dynamic data into the input element.您必须使用ng-model才能将动态数据绑定到input元素中。 And, get rid of angular expression in ng-show .并且,去掉ng-show的角度表达式。

This should be changed这个应该改

ng-show="myForm.{{entry.dynamicName}}.$invalid"

to

ng-show="myForm.entry.dynamicName.$invalid"

Snippet片段

 var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.array = [{ dynamicName: "John Doe" }, { dynamicName: "John Doe2" }]; });
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script> <div ng-app="myApp" ng-controller="myCtrl"> <form name="myForm"> <table> <tr ng-repeat="entry in array"> <td> <input name="entry.dynamicName" ng-model="entry.dynamicName" /> <span ng-show="myForm.entry.dynamicName.$invalid">Invalid</span> </td> </tr> </table> </form> </div>

Pretty same as in JS:与 JS 中的非常相似:

{{myForm[entry.dynamicField].$invalid}}

And just remember - you always use {{}} only once for expression.请记住 - 您总是只使用 {{}} 一次来表达。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM