Ember напротив positionalParams

В компоненте Ember можно определить свойство positionalParams, чтобы параметры переданные как позиционные параметры, становятся доступными как свойства. Например:

let MyComponent = Ember.Component.extend;
MyComponent.reopenClass({
  positionalParams: ['name', 'age']
});

при его вызове: {{my-component "John" 38}} свойство name имеет значение John, а свойство de age имеет значение 38.

Я хотел бы иметь противоположное поведение, но я не могу найти, возможно ли это. Поведение, которое я ищу, выглядит следующим образом:

Вместо передачи ряда позиционных параметров ({{my-comp param1 param2}}) я хотел бы передать свойство массива ({{my-comp positionalArguments=myArray}}), поскольку оно может иметь динамический размер.

Я ищу такое поведение не только у компонентов, но и у хелперов: {{ concat firstName " " lastName }} должно стать {{ concat positionalArguments=myArray }}. Помощник должен получить один и тот же массив параметров в качестве первого аргумента в обоих случаях.


person Willem de Wit    schedule 26.10.2016    source источник
comment
MyComponent использует метод reopenClass для определения positionalParams. так что это относится к классу MyComponent. Я бы сказал, что динамическое определение positionalParams невозможно.   -  person Ember Freak    schedule 26.10.2016


Ответы (1)


ОБНОВЛЕНИЕ После разрешения моего неправильного понимания:

Вам нужен оператор расширения. Вы можете просмотреть эти обсуждения 1, 2. На данный момент вы можете получить массив и выполнить присваивание при инициализации. Также взгляните на это обсуждение SO.

СТАРЫЙ ответ

Поэтому не используйте скобки массива в определении позиционного параметра:

let MyComponent = Ember.Component.extend;
MyComponent.reopenClass({
  positionalParams: 'myparams'
});

Используйте это так:

{{my-component 2 'a' 'b'}}
{{my-component 2 'a' 'b' 4 'c' 7}}
person ykaragol    schedule 26.10.2016
comment
Я хотел бы использовать его по-другому, передав ссылку на свойство (которая представляет собой массив), и ее следует интерпретировать как позиционные параметры. - person Willem de Wit; 26.10.2016