Добрый день, я новичок в 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];
}
Добрый день, я новичок в salesforce. Проблема заключается в следующем: не получается получить значения с custom metadata types. Прилагаю код: lightning component [code] <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> [/code] Controller [code] 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); }, [/code] Apex [code] @AuraEnabled public static List<Pagination_Setting__mdt> getPaginations(){ return [SELECT PagNumber__c FROM Pagination_Setting__mdt]; } [/code] Хочу реализовать вроде простую вещь, но что-то идет не так. Просмотрел кучу тем с форумов, но ответов или аналогичных ситуаций не нашел (допускаю, что где-то пропустил). Любая помощь будет ценна.
что конкретно тут имеется ввиду?
я что-то не вижу, чтобы ты в апексе дебажил что там возвращается в том квери
в ора контроллере консоль.логов, проверить что там вообще прилетает с сервера, тоже не видать...
а без этой информации так много вопросов и вариантов ответов
[quote="UaCat"]не получается получить значения с custom metadata types[/quote] что конкретно тут имеется ввиду? я что-то не вижу, чтобы ты в апексе дебажил что там возвращается в том квери в ора контроллере консоль.логов, проверить что там вообще прилетает с сервера, тоже не видать... а без этой информации так много вопросов и вариантов ответов
Проблема решилась. Дело было в том, 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);
},
Проблема решилась. Дело было в том, js контроллер не вызывался нигде в компоненте и соответственно атрибут paginationNumbers не заполнялся данными. Встала проблема вызова js контроллера из компоненты, кнопку не хотелось и ничего другого кроме как добавить в doInit второй action мне в голову не пришло, получилось что-то такое: js controller [code] 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); }, [/code] После этого в списке данные Но возникла следующая проблема (честно говоря не разобрался как добавить пикчу в сообщение, поэтому опишу словами) Проблема в том, что когда я выбираю значения из списка, например 25, отображается 25 записей, а значения в списке становятся true false ( конкретно одно true и все остальные false) и становятся некликабельными. Метод OnSelectChange из ui:inputSelect (c lightning:select все тоже самое) [code] 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); }, [/code] Любая помощь ценна, спасибо за ответы.
сложно сказать в чем проблема, просто вот так читая код
но план такой
Селект инпут не самый простой из всех инпутов. Сначала нужно убедится, что он работает как положено и ты получаешь вновь выбранное значение на onSelectChange
Нагугли рабочие примеры как использовать Селект инпут в aura
Сделай точно так же и у себя
убедись что получаешь значение
а дальше это уже твоя собственная логика как onSelectChange эвент и новое значение влияют на всю последующую логику, здесь уже нужно самому думать
сложно сказать в чем проблема, просто вот так читая код но план такой Селект инпут не самый простой из всех инпутов. Сначала нужно убедится, что он работает как положено и ты получаешь вновь выбранное значение на onSelectChange Нагугли рабочие примеры как использовать Селект инпут в aura Сделай точно так же и у себя убедись что получаешь значение а дальше это уже твоя собственная логика как onSelectChange эвент и новое значение влияют на всю последующую логику, здесь уже нужно самому думать
Проблема решилась и я понял что тему нужно было назвать не "Проблема получения значений в custom metadata types", а "Проблема использования ui:inputSelect "
Значения вытаскивались правильно, OnselectChange тоже в итоге работал правильно но до сих пор не понял как "сами по себе" менялись данные на boolean true/false.
Решил проблему использованием lightning:select который заработал как надо без каких-либо изменений в апексе или js контроллере. Не знаю почему не работало до этого, видимо дело было в опечатке, которую не заметил и решил что ошибка где-то в контроллере.
Спасибо за помощь
Проблема решилась и я понял что тему нужно было назвать не "Проблема получения значений в custom metadata types", а "Проблема использования ui:inputSelect " Значения вытаскивались правильно, OnselectChange тоже в итоге работал правильно но до сих пор не понял как "сами по себе" менялись данные на boolean true/false. Решил проблему использованием lightning:select который заработал как надо без каких-либо изменений в апексе или js контроллере. Не знаю почему не работало до этого, видимо дело было в опечатке, которую не заметил и решил что ошибка где-то в контроллере. Спасибо за помощь