У меня есть работающая система отправки при редактировании компании на моем сайте. В настоящее время я отправляю данные с помощью {{f.submit}}, который дает мне интерактивный текст, который обрабатывает действие отправки, теперь мне не нужен текст, который я хочу, чтобы действие отправки на значке из Fontawesome.
Это код в файле .hbs
{{#with (changeset company validations) as |changeset|}}
{{#form-for changeset submit=(action 'submit') as |f|}}
<div class = "card-header bg-primary">
<div class = "row">
<div class = "col-sm-6">
<a class = "card-link text-white" data-toggle = "collapse" data-parent = "#accordion" href = "#collapseOne">Übersicht</a>
</div>
<div class = "col-sm-6 text-right d-block">
{{! TODO: Submit via action submit doesnt work}}
<a class = "card-link text-white"><i class = "fa save"></i></a>
<a onclick = {{companyEditing}} class = "card-link text-white"><i class = "fa abort"></i></a>
<a {{action 'deleteCompany' company}} class = "card-link text-white"><i class = "fa trash"></i></a>
<a class = "card-link text-white" data-toggle = "collapse" data-parent = "#accordion" href = "#collapseOne"><i class = "fa angle"></i></a>
</div>
</div>
</div>
<div id = "collapseOne" class = "collapse multi-collapse show border border-primary rounded-bottom">
<div class = "card-body">
<div class = "row">
<div class = "col-sm-12">
{{f.submit "Save"}}
{{f.reset "Reset"}}
</div>
</div>
<div class = "row">
<div class = "col-sm-2">
<img class = "img-fluid" alt = "FIRMENLOGO" src = "img/puzzle_logo.png">
</div>
<div class = "col-sm-10 row">
<div class = "col-sm-4">
<table class = "table-uebersicht">
<tr>
<td>{{f.text-field 'name' label = "Name"}}</td>
</tr>
Я хочу запустить действие из
{{f.submit "Save"}}
на
<a class = "card-link text-white"><i class = "fa save"></i></a>
элемент.
И это файл .js за ним
import { inject as service } from '@ember/service';
import Component from '@ember/component';
import { computed } from '@ember/object';
import CompanyModel from '../models/company';
export default Component.extend({
store: service(),
i18n: service(),
router: service(),
personPictureUploadPath: computed('company.id', function() {
return `/company/${this.get('company.id')}/picture`;
}),
actions: {
submit(changeset) {
return changeset.save()
.then(() => this.sendAction('submit'))
.then(() => this.get('notify').success('Firmenübersicht wurde aktualisiert!'))
.catch(() => {
let company = this.get('company');
let errors = person.get('company').slice(); // clone array as rollbackAttributes mutates
person.rollbackAttributes();
errors.forEach(({ attribute, message }) => {
let translated_attribute = this.get('i18n').t(`company.${attribute}`)['string']
changeset.pushErrors(attribute, message);
this.get('notify').alert(`${translated_attribute} ${message}`, { closeAfter: 10000 });
});
});
},
deleteCompany(companyToDelete) {
companyToDelete.destroyRecord();
this.get('router').transitionTo('companies');
window.location.reload(true);
}
}
});
Спасибо за ответы!
Обновлено: добавил то, что я пробовал до сих пор: Я пробовал onclick = {{f.submit}}, который не принимает с ошибкой «f.submit не является допустимым именем для модификатора в строке 10». Я пробовал что-то вроде: {{действие 'submit' f}}, которое выдает ошибку: «Changeset.save не является функцией». Я пробовал много других вещей с похожими результатами или приводящими к разрыву страницы.
Последнее изменение: решение было {{действие "отправить" набор изменений}}
Я просто не знаю, как это сработает. Я пробовал onclick = {{f.submit}}
, который не принимает с ошибкой «f.submit не является допустимым именем для модификатора в строке 10». Я пробовал что-то вроде: {{action 'submit' f}}
, который выдает ошибку: «Changeset.save не является функцией». Я пробовал много других вещей с аналогичными результатами или в результате чего кнопка / значок ничего не делали.
взгляните на свой компонент form-for
. вот вам и submit
. Это все ваш собственный код.
@lux Спасибо, что действительно помогло, я всегда пробовал {{action 'submit' f}}, так как я думал, что мы отправляли f как набор изменений, тогда как на самом деле мне нужно было {{action 'submit' changeset}}. Работа с 4 людьми не всегда помогает понять код.
Так в чем твоя проблема? Опишите полученные ошибки или отображаемый неверный результат.