私の会社エンティティの編集モーダルでは、アドレスエンティティの作成モーダルを開きます。これにより、ユーザーは会社の住所を作成することができます。アドレス作成アプリサービスメソッドの.doneで、私はabp.event.triggerメソッドを使ってイベントをトリガーします。企業の編集モーダルは、このイベントを監視し、companyAddressエンティティへのエントリを作成できるようにします。間もなくcompanyAddressエンティティアプリケーションサービスメソッドが終了すると、.doneイベントでイベントトリガーがオフになります。ただし、アドレスの最初の作成後、ユーザーがアドレスを追加すると、トリガーメカニズムが複数回実行され、companyAddressテーブルに重複エントリが発生します。私はこれを何度もデバッグして、abpイベントトリガのためのドキュメントを読んでいて、これがどう起こっているのか理解できません。どんな助けでも大歓迎です。イベントバストリガーの複製
ここでアドレスモーダルJS
this.save = function() {
if (!_$form.valid()) {
return;
}
var address = _$form.serializeFormToObject();
_modalManager.setBusy(true);
_addressService.createAddress(
address
).done(function (result) {
abp.notify.info(app.localize('SavedSuccessfully'));
abp.event.trigger('addressCreated', {
id: result
});
console.log('addressCreated event triggered for id: ' + result);
_modalManager.close();
}).always(function() {
_modalManager.setBusy(false);
});
};
編集会社モーダルJS
abp.event.on('addressCreated', function (item) {
console.log('addressCreated event caught for id: ' + item.id);
//Call company address service
var _companyAddressService = abp.services.app.companyAddress;
_companyAddressService.createCompanyAddress({
CompanyId: $("#CompanyId").val(),
AddressId: item.id
}).done(function() {
abp.event.off('addressCreated', {
id: null
});
console.log('addressCreated event turned off for id: ' + item.id);
abp.notify.success(app.localize('AddressCreated'));
abp.ui.clearBusy('.modal-body');
});
});
私はもう一度モダルをテストしましたが、私は2つの異なる会社の作成モードで約8つの異なるアドレスを入力しました。このテストでは、重複の問題は発生しませんでした。しかし、作成されたアドレスごとにイベントが発生しない問題が起こっています。下記のコンソールログからわかるように、ID番号2,3,5および6は「開始済み」ログエントリを生成しませんでした。私のcompanyAddressテーブルにもこれらの4つのIDのエントリがないため、イベントはトリガされませんでした。 Register To Eventsのドキュメントから更新JSコード
は私がその変更を試してみましたが、今私が取得しています:それは働いていた – exlnt
abp.event.offライン上に「捕捉されないにReferenceErrorをaddressCreatedが定義されていない」が、私はさらにテストを保持として、重複がまだ起こっています、 ときどき。addressCreated関数はまだ複数回実行されていますが、まったく実行されません。最新のクロムコンソールログを表示するために投稿を更新しました。 – exlnt
私はこの問題を共有した最新のコンソールイメージで、トリガーイベントがID 2と3に対して発生しなかったということです。それ以外の場合、同じIDに対して複数回発生します。 – exlnt