Создать настраиваемое поле с помощью angularJS

0

У меня есть данные для настраиваемого поля, так как

var data = [
            {type:"text",fieldName:"UserName",fieldValue:"bob"},
            {type:"text",fieldName:"password",fieldValue:"bob"}
           ]

Проблема в том, когда я создал настраиваемое поле, как я могу использовать ng-model поскольку я использую ng-repeat для создания настраиваемого поля.

Вот плункер

Я не хочу связывать только fieldValue, но также хочу изменить имя пользователя и пароль

данные динамичны.

Заметки

Я хочу передать имя пользователя и пароль на сервер через контроллер.

Здесь ярлык UserName и Password является просто примером, это может быть идентификатор электронной почты, номер телефона или что-то еще.

Я хочу, чтобы данные были как {UserName:"test",Password:"123456abcd"}

Если у меня есть имя поля электронной почты, то мои данные должны быть {Email: "[email protected]"} на контроллере

поэтому я могу использовать $ http для отправки данных на сервер, например:

$http.post('myUrl',data).then(function(response){
           console.log(responce);
})
Теги:

2 ответа

2
Лучший ответ
ng-model="c.fieldValue"

так как вы хотите, чтобы поле заполняться с fieldValue атрибутом currend элемента массива: c (и наоборот).

plunkr

Когда вы отправляете свою форму, просто перейдите в свое поле, чтобы создать свой объект для отправки:

var command = {};
angular.forEach(data, function(field) {
    command[field.fieldName] = field.fieldValue;
});
$http.post('myUrl',command).then(function(response){
    console.log(response);
});
  • 0
    Я не хочу связывать только fieldValue, но хочу изменить имя пользователя и пароль. Моя ошибка, я не дал эти детали в вопросе.
  • 0
    Я не понимаю Вы также хотели бы иметь поле ввода для изменения атрибута fieldName каждого объекта в данных? Ну, сделайте то же самое, но используйте вместо этого ng-model="c.fieldName" .
Показать ещё 4 комментария
0

Я думаю, что вам нужно использовать условные обозначения. Он работает следующим образом:

 var objToSendToServer;
 objToSendToServer[c.fieldName] = c.fieldValue;

Дополнительная информация по этой ссылке: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors#Bracket_notation

Я думаю, что последний код должен выглядеть примерно так:

var objToSendToServer;
data.forEach(function(){
    objToSendToServer[c.fieldName] = c.fieldValue;
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню