Добрый день, я новичок в salesforce. Проблема заключается в следующем: не получается получить значения с custom metadata types.
Прилагаю код:
lightning component
<aura:attribute name="paginationNumbers" type="List"/>
<ui:inputSelect aura:id="records" change="{!c.onSelectChange}">
<aura:iteration items="{!v.paginationNumbers}" var="numberpag">
<ui:inputSelectOption text="{!numberpag.PagNumber__c}" value="{!numberpag.PagNumber__c}"/>
</aura:iteration>
</ui:inputSelect>
pagNum : function(component, event){
var action = component.get("c.getPaginations");
action.setCallback(this, function(resp)
{
var state = resp.getState();
if (state === "SUCCESS")
{
component.set("v.paginationNumbers", resp.getReturnValue());
}
});
$A.enqueueAction(action); },
@AuraEnabled
public static List<Pagination_Setting__mdt> getPaginations(){
return [SELECT PagNumber__c FROM Pagination_Setting__mdt];
}
что конкретно тут имеется ввиду?
я что-то не вижу, чтобы ты в апексе дебажил что там возвращается в том квери
в ора контроллере консоль.логов, проверить что там вообще прилетает с сервера, тоже не видать...
а без этой информации так много вопросов и вариантов ответов
Проблема решилась. Дело было в том, js контроллер не вызывался нигде в компоненте и соответственно атрибут paginationNumbers не заполнялся данными. Встала проблема вызова js контроллера из компоненты, кнопку не хотелось и ничего другого кроме как добавить в doInit второй action мне в голову не пришло, получилось что-то такое:
js controller
doInit : function(component, event, helper)
{
var pageSize = component.get("v.pageSize");
var action = component.get("c.getOpportunities");
action.setCallback(this, function(response)
{
var state = response.getState();
if (component.isValid() && state === "SUCCESS")
{
component.set("v.opportunityList", response.getReturnValue());
component.set("v.totalSize", component.get("v.opportunityList").length);
component.set("v.start",0);
component.set("v.end",pageSize-1);
var paginationList = [];
for(var i=0; i< pageSize; i++)
{
paginationList.push(response.getReturnValue()[i]);
}
component.set("v.paginationList", paginationList);
//console.log(paginationList);
}
});
var action2 = component.get("c.getPaginations");
action2.setCallback(this, function(resp)
{
var state = resp.getState();
if (state === "SUCCESS")
{
component.set("v.paginationNumbers", resp.getReturnValue());
//console.log(paginationNumbers);
}
else if (state === "ERROR") {
console.log('Error');
}
});
$A.enqueueAction(action);
$A.enqueueAction(action2);
},
onSelectChange : function(component, event, helper)
{
var selected = component.find("records").get("v.value");
var paginationList = [];
var oppList = component.get("v.opportunityList");
for(var i=0; i< selected; i++)
{
paginationList.push(oppList[i]);
}
component.set("v.paginationList", paginationList);
component.set("v.pageSize", selected);
},
сложно сказать в чем проблема, просто вот так читая код
но план такой
Селект инпут не самый простой из всех инпутов. Сначала нужно убедится, что он работает как положено и ты получаешь вновь выбранное значение на onSelectChange
Нагугли рабочие примеры как использовать Селект инпут в aura
Сделай точно так же и у себя
убедись что получаешь значение
а дальше это уже твоя собственная логика как onSelectChange эвент и новое значение влияют на всю последующую логику, здесь уже нужно самому думать
Проблема решилась и я понял что тему нужно было назвать не "Проблема получения значений в custom metadata types", а "Проблема использования ui:inputSelect "
Значения вытаскивались правильно, OnselectChange тоже в итоге работал правильно но до сих пор не понял как "сами по себе" менялись данные на boolean true/false.
Решил проблему использованием lightning:select который заработал как надо без каких-либо изменений в апексе или js контроллере. Не знаю почему не работало до этого, видимо дело было в опечатке, которую не заметил и решил что ошибка где-то в контроллере.
Спасибо за помощь