プラグインの開発にて、詳細画面を開いたときに非同期処理で取得したデータをREST APIで登録(更新)して、登録した内容をリロードせずに詳細画面に反映した後のことで問題を抱えています。
データ登録(更新)、画面反映後に画面をリロードせずに編集画面を開き、編集後保存ボタンを押すと次のエラーが出ます。
エラー
- レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。
- (GAIA_UN03 dxcuupA4LQhV9QkeSnHq)
処理の流れは次のようにしています。
1)kintone.events.on(‘app.record.detail.show’, function(){});内で非同期処理を実行してデータを取得。
2)(1)のコールバック関数内にて、kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, body, function(resp) {“成功時の処理”}, function(resp) {“失敗時の処理”});を実行して取得したデータを登録(更新)。
3)登録(更新)成功時にkintone.app.record.getFieldElement(“フィールド名”).textContent にて画面に反映。
画面の反映は(3)の方法にてjavascriptで動的に詳細画面のフィールドを書き換えています。
リロードをしない理由は、プラグイン使用者のストレスを減らすためです。
(リロードの処理を入れると、本プラグインの運用上、利用者が頻繁にプラグインによる画面のリロードを見せられることになりストレスが大きいと考えたため。)
REST APIで登録(更新)した後に、リロードせずにリロードしたときと同じ状態の画面にする(上記エラーが出ないようにする)良い方法はありますか?
REST APIを使用しているのは、非同期処理後だと下記URLのフィールドの値を書き換える処理が上手くいかなかったためです。(非同期処理後はkintone.events.onを抜けているので return event ができていない?)
詳細画面を開いたタイミングでの非同期処理によるデータの取得は必須です。非同期処理後にREST APIを使用せずにフィールドの値を書き換える(kintoneのDBを更新する)方法があればそちらも教えて頂きたいです。
現在の私のkintoneの仕様の認識は次の通りです。
・非同期処理後の詳細画面のフィールドの更新はREST APIにて行う必要がある。
・詳細画面にてREST APIによる更新を行った場合、更新内容の画面への反映はリロードが必須である。(リロードしないと変更前の状態が維持され上記エラーが出る。)
この認識で合っている場合は毎回リロードをするのは仕方がないと考えます。
<追記>
処理は全て詳細画面内で実行します。
編集画面は詳細画面右上のアイコンをクリックして表示した時のことです。(ページの遷移はなし。)
以上、宜しくお願いします。