Size: a a a

2021 June 22

l(

lolmaus (Andrey Mikh... in Ember_js
Я хочу, чтобы компонент yield'ил объект с хелперами, например:


<MyComponent as |foo|>
 <ThirdPartyComponent
   @isCompact={{foo.lte "xl"}}
 >
</MyComponent>

Вопрос: lte может быть простой функцией? Или нужно именно хелпер делать?

Если да, то как объявить его инлайново в MyComponent? @ilifeart, у тебя вроде был пример недавно?

И как его вызывать из JS? Оборачивать аргументы в массив foo.lte(['xl'])?
источник

l(

lolmaus (Andrey Mikh... in Ember_js
Пояснение по XY problem.

В моей текущей реализации, объект foo содержит проперти size cо строкой, идентифицирующей текущий размер: "xxs", "xs", "s", "m", "l", "xl", "xxl"...

И сейчас мне приходится писать так:


@isCompact={{or (eq foo.size "xxs") (eq foo.size "xs") (eq foo.size "s") (eq foo.size "m")}}

Очень неудобно, и легко ошибиться.
источник

AK

Alex Kanunnikov in Ember_js
По разному можно сделать
источник

AK

Alex Kanunnikov in Ember_js
С помощью хэлпера helper можно делать замыкания  (по идее), наподобие с component
источник

l(

lolmaus (Andrey Mikh... in Ember_js
Типа {{yield (helper this.isLessThan this.size)}}?
источник

AK

Alex Kanunnikov in Ember_js
Если тебе нужно создать локальный хэлпер, то простая функция без аддонов не будет работать как хэлпер
источник

AK

Alex Kanunnikov in Ember_js
Ага
источник

l(

lolmaus (Andrey Mikh... in Ember_js
Он в встроенный в ember-source?
источник

AK

Alex Kanunnikov in Ember_js
Да, добавляли вроде как
источник

l(

lolmaus (Andrey Mikh... in Ember_js
Спасибо!
источник

AK

Alex Kanunnikov in Ember_js
https://github.com/lifeart/ember-template-import-decorators можешь отсюда код создания своего хэлпера взять
источник

C

Chilicoder in Ember_js
Не могу я никак к глиммеру привыкнуть.

Есть у меня в компоненте tracked signalSerie свойство. Массив. Затем я передаю его в другой компонент для открисовки. Я меняю массив на другой, но отрисовывающий компонент не видит это изменение.

Рядом стоит
{{this.signalSerie.length}} и все хорошо отслеживает
источник

C

Chilicoder in Ember_js
<D3::SignalLine
   @serie={{this.signalSerie}}

вот так передаю
источник

l(

lolmaus (Andrey Mikh... in Ember_js
Если у тебя @tracked signalSerie, и ты делаешь this.signalSerie = [], то должно видеть изменение.
источник

C

Chilicoder in Ember_js
так вот не видит гад
источник

A

Artem in Ember_js
а покажи больше кода
источник

C

Chilicoder in Ember_js
а в этом компоненте у меня
 {{did-update this.rerender}}
источник

A

Artem in Ember_js
{{did-update this.rerender @serie}}
источник

C

Chilicoder in Ember_js
Но даже такие вещи не работают


 get xScale() {
   const serie = this.args.serie;
   let firstDate = new Date();
   let lastDate = firstDate;
   if (serie.length > 0) {
     firstDate = this.args.serie[0].date;
     lastDate = this.args.serie.slice(-1)[0].date;
   }
источник

C

Chilicoder in Ember_js
Отлично. Сработало!
источник