У меня есть список полей ввода в параметрах. Теперь я добавляю эти поля ввода на свою страницу, используя ng-repeat.
<input type="text">
У меня есть свои типы ввода в том же объекте параметров, который повторяется. Эти типы: String, Varchar и т.д.
Теперь я хочу установить тип поля ввода в соответствии с типом параметра, который у меня есть.
Вот что я хочу сделать
<tr ng-repeat = "option in options">
<td><input type="text" ></td>
</tr>
У меня есть параметр с именем option.Paramtype, который содержит тип каждого поля ввода. Я хочу установить тип поля ввода как число, если он является Int и так далее.
Пожалуйста помоги.
Учитывая, что у вас есть множество параметров, таких как:
options = [
{Paramtype:'String', foo:25, bar:'Unicorn'},
{Paramtype:'int', foo:30, bar:'Kitten'},
{Paramtype:'Email', foo:28, bar:'Dragon'},
{Paramtype:'Date', foo:15, bar:'Kanye'}
]
Внутри блока ng-repeat вы можете использовать ng-if
чтобы проверить свойство Paramtype и соответствующим образом задать тип ввода. Вот так:
<tr ng-repeat = "option in options">
<td>
<input ng-if="option.Paramtype == 'String'" type="text">
<input ng-if="option.Paramtype == 'int'" type="number">
<input ng-if="option.Paramtype == 'Email'" type="email">
</td>
</tr>
Надеюсь, что это поможет
В противном случае, если вы могли бы добавить дополнительный параметр в каждый элемент массива параметров, вы можете заполнить тип ввода, используя угловое привязку.
options = [
{Paramtype:'String', inputType:'text', bar:'Unicorn'},
{Paramtype:'int', inputType:'number', bar:'Kitten'},
{Paramtype:'Email', inputType:'email', bar:'Dragon'},
{Paramtype:'Date', inputType:'datetime', bar:'Kanye'}
]
<table>
<tr ng-repeat = "option in options">
<td><input type="{{option.inputType}}"></td>
</tr>
</table>
Я просто предлагаю вам использовать директиву ng-attr
чтобы динамически устанавливать значение атрибута type
Чтобы сделать вашу реализацию более чистым, вы должны поддерживать один объект, который будет отображать What Paramtype
в качестве типа ввода. Затем мы могли бы использовать переменную mappingOfTypes
со своим индексом для заполнения значения атрибута type
поля ввода.
наценка
<tr ng-repeat = "option in options">
<td><input ng-attr-type="{{mappingOfTypes[option.Paramtype]}}" ></td>
</tr>
контроллер
$scope.mappingOfTypes = ["String": "text", "Int": 'number'];
ng-switch
была создана именно для случая использования, описанного в вашем ответе.