mobile版開発において、引き継がれたデータが表示されない。

前回データである「納入先コード、棟、フロア」を、データを追加する際に引き継ぎたいのですが、入力ボックスに表示されません。

解決策をご教示願います。

 

jQuery.noConflict();
(function($) {
    “use strict”;
    kintone.events.on(“mobile.app.record.create.show”, function(event) {
        let record = event.record;
        let appId = event.appId;
        let param = {
            app: appId,
            query: ‘limit 1’
        };
    
        const body = {
   ‘app’: kintone.mobile.app.getId()
        };

        kintone.api(kintone.api.url(‘/k/v1/app/form/fields.json’, true), ‘GET’, body, (resp) => {
            // success
            console.log(resp);
        }, (error) => {
        // error
            console.log(error);
        });
        
        kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, param,(getRecords) =>{

            console.log(getRecords);
            console.log(event);

            event.record.棟.value =getRecords.records[0][‘棟’].value;
            event.record.納入先コード.value =getRecords.records[0][‘納入先コード’].value;
            event.record.フロア.value =getRecords.records[0][‘フロア’].value;

            
            console.log(‘納入先コード:’, getRecords.records[0][‘納入先コード’].value);
            console.log(‘棟:’, getRecords.records[0][‘棟’].value);
        });
     
        return event;
    });
})(jQuery);

        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', param,(getRecords) =>{

            console.log(getRecords);
            console.log(event);

            event.record.棟.value =getRecords.records[0]['棟'].value;
            event.record.納入先コード.value =getRecords.records[0]['納入先コード'].value;
            event.record.フロア.value =getRecords.records[0]['フロア'].value;

            
            console.log('納入先コード:', getRecords.records[0]['納入先コード'].value);
            console.log('棟:', getRecords.records[0]['棟'].value);
        });
     
        return event;

      return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', param).then((getRecords) => {
        event.record.棟.value =getRecords.records[0]['棟'].value;
        event.record.納入先コード.value =getRecords.records[0]['納入先コード'].value;
        event.record.フロア.value =getRecords.records[0]['フロア'].value;

return event;
        });

こちらに変更すれば問題ないかと思います。
また、jQueryは読み込んでいますか?こちらのコードにはjQuery自体使われていないので削除しても良いかもしれません。

mls-hashimoto様

 

いつもお世話になっております。ご回答ありがとうございました。

記載のコードを試したところ、表示が確認できました。

PC版では修正前のコードで入力フォームにデータが表示されたのでmobile版でも表示されると考えたのですが、

今回のようにmobile版で表示されなかった原因を教えて頂けないでしょうか。

以上、よろしくお願いいたします。

ito さま

無事に実装できたようで何よりです。

修正前のコードですが、モバイル版の書き方は問題なく、そもそも修正前の時点で動かないはずです。itoさまの投稿履歴から、一番最初に私が投稿したasync/awaitを使った処理や、その次にTOさまが投稿された return kintone.api(…)をつかった処理であれば動作します。

非同期処理、Promiseといったものを理解する必要がありますが、簡単に申し上げるとkintone.api(…)のレコード取得(プログラムは上から順に実行、計算されますが、kintone.api(…)はレコードの取得や登録を行う「命令」を行うまでがプログラムの実行文で、命令しただけなのでその実行結果はすぐに得られません)が終わるより早くreturn eventが実行され、kintone側の処理が終わってしまうのが原因です。そのため、kintone.api(…)が終わるまで待つか、終わってからreturn eventをする必要があり、async/awaitやreturn kintone.apiがそちらに相当します。

 

このあたり で解説されています。

mls-hashimoto様

いつもお世話になっております。

ご回答ありがとうございます。

解決いたしました。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。