У меня есть данные для настраиваемого поля, так как
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);
})
ng-model="c.fieldValue"
так как вы хотите, чтобы поле заполняться с fieldValue
атрибутом currend элемента массива: c
(и наоборот).
Когда вы отправляете свою форму, просто перейдите в свое поле, чтобы создать свой объект для отправки:
var command = {};
angular.forEach(data, function(field) {
command[field.fieldName] = field.fieldValue;
});
$http.post('myUrl',command).then(function(response){
console.log(response);
});
Я думаю, что вам нужно использовать условные обозначения. Он работает следующим образом:
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;
});
fieldName
каждого объекта в данных? Ну, сделайте то же самое, но используйте вместо этогоng-model="c.fieldName"
.