Я хотел бы передать параметр методу контроллера JavaScript, чтобы метод мог форматировать данные...

Компонент

<ul>
   <aura:iteration items="{!v.listOfStuff}" var="a">
      <li>{! c.formatFromUntil(a.Start__c, a.End__c) }</li>
   </aura:iteration>
<ul/>

Контроллер JavaScript

formatFromUntil : function(starts, ends){
   // format the two date like below
   return 'from 3:00 PM until 4:30 PM'
},

Но консоль разработчика не сохраняет, и я получаю эту ошибку:

Не удалось сохранить exampleComponent.cmp: неожиданный токен: '(' в столбце X выражения: c.formatFromUntil(a.Start__c, a.End__c): Источник

Он явно не хочет, чтобы я обращался к таким методам контроллера.

Как мне подойти к этому?

0
Robs 3 Июн 2018 в 22:09
1. Нет, вы не можете передавать параметры через разметку, вы можете сделать это, создав дочерний компонент, в этом cmp вы хотите создать атрибут и установить значение формата даты через doinit.
 – 
vignesh
3 Июн 2018 в 22:22

1 ответ

Лучший ответ

Вы должны рассчитать данные в своем контроллере/помощнике:

listOfStuff.forEach(item => 
    item.FromUntil = helper.formatFromUtil(item.Start__c, item.End__c);

Который вы затем визуализируете обычно:

  <li>{!a.FromUntil }</li>

Если это фактические записи, которые вы собираетесь отправить обратно на сервер позже, вам может понадобиться «обертка»:

listOfStuff = sourceList.map(function(item) 
    return { record: record, 
             FromUtil: helper.formatFromUntil(record.Start__c, record.End__c) 
});

Вам нужно будет соответствующим образом скорректировать разметку и любой другой код, который зависит от структуры элемента.

1
sfdcfox 3 Июн 2018 в 22:22
И если ListOfStuff является List, он добавит свойство FromUntil?
 – 
Robs
4 Июн 2018 в 01:13
1
Вы можете поместить в список все, что хотите, но будьте осторожны, если вы отправляете его обратно на сервер, так как это может иметь нежелательные побочные эффекты.
 – 
sfdcfox
4 Июн 2018 в 02:44