Соединение bs-кнопок в bs-форме с действиями компонента (ember-bootstrap)

Как правильно подключить bs-button внутри bs-form к действию компонента?


Немного предыстории о том, что я хочу сделать и уже попробовал:

Я нахожусь в процессе обновления Ember с 2.10 до 2.14 и ember-bootstrap с 0.11.3 до 1.0. Я столкнулся с проблемой с ember-bootstrap.

У меня две кнопки в форме (bs-form): "Сохранить" и "Отмена". Форма размещена в компоненте Ember. В старой версии у меня просто было два bs-button элементы, как это:

{{bs-button defaultText="Save" type="primary" action="save"}}
{{bs-button defaultText="Cancel" type="primary" action="cancel"}}

В классе компонентов я определил соответствующее действие:

actions: {
  save() { /* do saving stuff */ }
  cancel() { /* do cancelling stuff */ }
}

Теперь это больше не работает: bs-button использования onClick вместо action сейчас, но просто добавив onClick="save" не работает (получаю TypeError: action is not a function); также, onClick=(action "save") не работает (Assertion Failed: An action named 'save' was not found in (generated edit-organization controller)).

Однако, когда не используется bs-button но нормальный button элемент в сочетании с action помощник, все работает просто отлично

<button class="btn btn-default" {{action 'cancel'}}>Cancel</button>
<button class="btn btn-primary" {{action 'save'}}>Save</button>

Я подозреваю, что проблема связана с использованием компонента для размещения формы; в конце концов, документы ember-bootstrap утверждают, что действия используются для...

отправить действие на ваш контроллер.

Тем не менее, я хотел бы использовать компонент (в конце концов, контроллеры уходят, верно?). Любая помощь по этому вопросу приветствуется.

1 ответ

Решение

Вы можете создать закрывающее действие и передать его компоненту bs-button.

{{bs-button defaultText="Save" type="primary" save=(action "save")}}
{{bs-button defaultText="Cancel" type="primary" cancel=(action "cancel")}}

Внутри компонента,

<button class="btn btn-default" {{action cancel}}>Cancel</button>
<button class="btn btn-primary" {{action save}}>Save</button>
Другие вопросы по тегам