お世話になっております。
Javascript初心者です。
Aアプリの編集画面からボタンで、Bアプリへのレコード登録(POST)を行っております。
Aアプリに関連レコード一覧を設置して、Bアプリの情報を表示しています。
Aアプリ:
・登録者情報
・登録者のスケジュール(Bアプリ)の関連レコード一覧(キー:登録者ID)
Bアプリ:
・登録者のスケジュール
①A編集画面を開く
②①でBアプリへのレコード登録ボタンを押す→Bアプリにレコードが登録される
③Aアプリの関連レコード一覧の表示を更新
保存をすれば関連レコード一覧の情報が表示されるのですが、編集画面のままですと更新されません。
location.reload()すると、他のフィールドの入力値が消えてしまいます。
こちらを参考に「登録者ID」にフォーカスを当てたりしてみたのですが、やり方がまずいのか更新されませんでした。(https://developer.cybozu.io/hc/ja/community/posts/20165573)
どのようにすれば実現できるのか、ご教示頂けますと助かります。
kintone.events.on(‘app.record.edit.show’, function(event){
// 「新規登録」ボタン
var scheduleButtonAdd = createBtn(‘my_index_button2’, btnClassName, ‘新規登録’);
kintone.app.record.getSpaceElement(“schedule”).appendChild(scheduleButtonAdd);
// 別アプリへレコード登録
scheduleButtonAdd .onclick = (function() {
省略…
kintone.api(kintone.api.url(‘/k/v1/records.json’, true), ‘POST’, body);
});
});
scheduleButtonAdd .onclick = (function() {
省略…
kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', body);
});
この箇所で reloadすると、って意味ですかね?kintone.apiが終わり切る前にreloadすることになり、投稿が失敗してそうです。
async/awaitを使うのはどうでしょうか。
scheduleButtonAdd .onclick = async function() {
省略…
await kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', body);
location.reload();
};
アプリBのPOSTまではうまく行っているという認識でよいでしょうか?
どんなコードを書いたかわからないのですが、試してみてほしいのは
登録ボタンと更新ボタンを分けてみてください。登録後に「関連レコードの更新機能」は動きますでしょうか?
もし動くなら非同期処理がうまく行っていないと思いますので、
アプリBのレコード登録完了後に関連レコードの表示更新が走るように工夫する必要があります。
※追記
投稿する前に一度更新ボタンを押さないと少し恥ずかしい事になってしまいますね。村濱さんと同じことが言いたかったです。
お返事ありがとうございます。
アプリBのPOSTは成功しており、
location.reload();をすると関連レコード一覧が表示されるのですが、
保存前の他のフィールド値が消えてしまいます。
関連レコード一覧のみ更新して表示されるということは難しいのでしょうか?
細矢様
ご回答ありがとうございます。
kintone.app.record.set を使ってみたところ、
そこまでは入力途中の値が保存されているのを確認できたのですが、
その後リロードするとやはり最初の値に戻ってしまいました。
(関連レコード一覧は表示されました)
system
(system)
クローズされました:
8
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。