Передача значений в ember.компоненты js, когда они передаются в качестве аргумента addin (например, ember-bootstrap-modals-manager)


Передача значений в ember.компоненты js, когда они передаются в качестве аргумента addin (например, ember-bootstrap-modals-manager)

22.02.2020 01:17:23 Просмотров 66 Источник

У меня есть вопрос о аддоне ember-bootstrap-modals-manager, но вполне возможно, что проблема, которую я описываю, может возникнуть с другими аддонами Ember.

Используя ember-bootstrap-modals-manager, вы можете отобразить диалоговое окно оповещения с пользовательским телом . Вот экранный дамп примера.

enter image description here

Для этого вы создаете компонент Ember, шаблон которого содержит, например, вашу пользовательскую разметку тела ...

<p class="alert alert-info">
  Custom Alert Body Component
</p>

... затем можно указать, что тело предупреждения должно использовать эту разметку, указав имя компонента при вызове диалогового окна предупреждения, например (предполагая, что созданный компонент называется custom-alert-body)...

showCustomAlertModal() {
    const options = {
      bodyComponent: 'custom-alert-body',
    };
    set(this, 'options', options);
    get(this, 'modalsManager')
      .alert(options);
 }

... это нормально, но если вы хотите ввести значения в шаблон компонента, например, вот так ...

<p class="alert alert-info">
  Custom Alert Body Component. The alert msg is : {{alertmsg}}
</p>

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

Итак, мой вопрос заключается в следующем (если вы знакомы с ember-bootstrap-modals-manager), как у вас может быть пользовательское тело, которое принимает значение во время выполнения или (если вы не знакомы с ним) вы когда-нибудь видели компоненты, используемые подобным образом в другом контексте, и если да, то как они принимают значение во время выполнения ?

У вопроса есть решение - Посмотреть?

Ответы - Передача значений в ember.компоненты js, когда они передаются в качестве аргумента addin (например, ember-bootstrap-modals-manager) / Passing values to ember.js components when they are passed as an argument to addin (eg ember-bootstrap-modals-manager)

Является ответом!
Gokul Kathirvel

22.02.2020 06:56:59

Да, вы совершенно правы. Поскольку компонент bodyComponent вызывается вами не непосредственно через шаблон, а через динамический помощник {{component}}, пакет ember-bootstrap-modals-manager должен предоставлять способ передачи значений в компонент.

Прошелся по источнику пакета и выяснил, что объект options был отправлен в динамически вызываемый компонент. Таким образом, вы можете отправить alertMsg через объект options:

showCustomAlertModal() {
    const options = {
      bodyComponent: 'custom-alert-body',
      alertMsg: 'Post created successfully' // <- your alert message
    };
    set(this, 'options', options);
    get(this, 'modalsManager')
      .alert(options);
 }

и может быть доступен через options args:

<p class="alert alert-info">
  Custom Alert Body Component. The alert msg is : {{options.alertmsg}}
</p>

Однако это не очевидно, когда вы просматриваете документы. Вы даже можете внести свой вклад в документы, когда найдете время :)

Помочь в развитии проекта:
Закрыть X