Регистрация  |  Вход

Проблема получения значений в custom metadata types

Добрый день, я новичок в 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>

Controller
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);

},


Apex
@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]
Хочу реализовать вроде простую вещь, но что-то идет не так. Просмотрел кучу тем с форумов, но ответов или аналогичных ситуаций не нашел (допускаю, что где-то пропустил). 
Любая помощь будет ценна.

UaCat
не получается получить значения с custom metadata types

что конкретно тут имеется ввиду?

я что-то не вижу, чтобы ты в апексе дебажил что там возвращается в том квери

в ора контроллере консоль.логов, проверить что там вообще прилетает с сервера, тоже не видать...

а без этой информации так много вопросов и вариантов ответов

[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);
},

После этого в списке данные
Но возникла следующая проблема (честно говоря не разобрался как добавить пикчу в сообщение, поэтому опишу словами)
Проблема в том, что когда я выбираю значения из списка, например 25, отображается 25 записей, а значения в списке становятся true false ( конкретно одно true и все остальные false) и становятся некликабельными.
Метод OnSelectChange из ui:inputSelect (c lightning:select все тоже самое)
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 контроллере. Не знаю почему не работало до этого, видимо дело было в опечатке, которую не заметил и решил что ошибка где-то в контроллере.
Спасибо за помощь