Доброго времени суток.
Нужна помощь в создании формы на lightning.
Имеется объект с полями. Создаю aura component и через контроллеры и хелперы вывожу данные из объекта.
И вверху есть кнопки, по которым необходимо сделать вставку, удаление и изменение в списке контактов.
Может есть примеры как это сделать?
Буду очень благодарен.
Там все понятно. И во второй части тоже.
Просто не совсем доходит до меня, как реализовать запись в поля и удалять поля.
Думал, может есть какие нить примеры уже реализованные.
Если я вам правильно понял, то вы хотите перейдя на определённую запись, поменять значение некоторых полей , обновить или удалить значение, чтобы потом по нажатию на кнопку “save” например, у записи изменились значения?
Например про добавление.
Есть таблица с данными (в моем примере это имя, телефон, емаил)
допустим внизу есть еще один компонент с инпутами имя, телефон, емаил.
туда вводим инфу, нажимаем сохранить и данные записываются в объект.
Хотябы разобраться с добавлением) а удалить я думаю проще будет) но буду благодарен за любую предоставленную информацию)
В контроллере создайте объект/поле необходимого вам типа. Например
public String name{get;set;}
И потом в inputField на VF странице в value вы подставляете это поле с помощью
value={!name}
и потом используйте метод, например:
public void createRecord() {
System.debug(name);
}
Таким образов значения со страницы окажутся в вашем контроллере.
Отсюда можно сделать вывод что с таким же успехом эти значения можно сразу писать в объект необходимого типа и после чего делать insert/update.
Т.е
В контроллере, создайте экземпляр необходимого вам типа, и в него записывайте введённые значения со страницы. После просто вызывайте insert myAccount.
public Account myAccount{get;set;}
public myController() {
myAccount = new Account(Name = "Test");
}
на странице пишете в {!myAccount.Name} или {!myAccount.Phone} поля, и по нажатии на кнопку делаете insert. Все введённые значение будут подхвачены и запись будет создана.
Вот так в Lightning компоненте объявляется переменная в вашем случае это допустим объект Contact
<aura:attribute name="con" type="Contact (Имя вашего SF обьекта) " default="(Описавыем сам обьект какие у него будут доступные поля){ 'sobjectType': 'Contact',
'Name': '',
'Phone': ''}"/>
Вот так обращаемся к объекту Contact на странице:
<lightning:input aura:id="namefield" label="Account Name"
name="accname (Сами можете придумать)"
value="{!v.con.Name}" (Здесь указываем что это поле Name обьявленого выше обьекта Contact. v.con.Name - v это view зарезервировано SF; con это наша переменная на странице )
required="true"/>
Дальше создаем JavaScript контроллер:
({
saveCon : function(component(то что приходит из Lightning страницы), event) {
var newCon = component.get("v.con") - (обращаемся к переменной "con" обьявленой на странице);
var action = component.get("c.saveContact") - (обращаемся к функции из Apex класса где "c.имяФункции" обозначение метода из Apex контроллера);
action.setParams({
"contact (Это имя входящего параметра функции "saveContact" из Apex класса )":newCon - (это объект из страницы здусь мы передаем значения из страницы в Apex метод )
});
action.setCallback(this, function(response) { в этом месте получаем ответ от Apex метода можно ничего не менять
var state = response.getState();
if (state === "SUCCESS") {
component.set("v.conId" - это еще одна переменная из страницы туда записывается ид сохраненной записи, response.getReturnValue().Id); -
component.set("v.con", response.getReturnValue());
}
});
$A.enqueueAction(action); - этот момент обязателен сюда нужно передать переменную action которую мы обьявили выше "var action" без него не будет работать
}
})