複数のアプリで同じような処理を行うことが多いため、jsファイルの分け方についてや別のjavascriptファイルの関数読み込む方法を参考にして、下記のようにjsファイルをわけています。
common.js=複数のアプリで使用する関数
main.js=kintone各イベント時の処理(アプリ独自の処理やcommon.jsの関数を呼び出す)を記載、
common.jsの関数でkintone.promiseを使用しているものがあるのですが、
resolve()あるいはreject()のところで、関数が返されず、処理が進んでしまいます。
common.jsの関数の処理を、main.jsにべた書きすると、うまく処理されるので、関数の処理そのものには問題ないと思うのですが…。
このような書き方では、kintone.promiseは動かないのでしょうか。
また、上記のようなファイル構成を実現するには、どのように書くのが一般的・適切なのでしょうか。
ご教示よろしくお願い致します。
【common.js】
jQuery.noConflict();
(function($) {
"use strict";
window.名前= window.名前|| {};
window.名前.処理内容= {};
window.名前.処理内容.関数= {
関数A: function(event){
return new kintone.Promise(function(resolve, reject) {
var 値A=event.record['フィールドA'].value;
// クエリ文の設定(GET用)
var queryGet = {
"app": App,
"query": 'フィールドA= \"'+値A+'\" order by フィールドA desc limit 1'
};
//アプリBから該当のレコードがあるか検索
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', queryGet).then(function(resp) {
if (resp.records.length !== 1) {
resolve(event);
}
var respRec = resp.records[0];
//×××の場合は何もしない
if(respRec['フィールドB']['value']==×××){
resolve(event);
}
// クエリ文の設定(PUT用)
var queryPut = {
"app": App,
"updateKey": {
"field":'フィールドA',
"value":値A
},
"record": {
"フィールドB":{
"value":xxx
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', queryPut).then(function(resp) {
resolve(event);
return event;
},function(error) {
event.error='エラー';
resolve(event);
})
},function(error) {
event.error='エラー';
resolve(event);
});
});
}
}
})(jQuery);
【main.js】
jQuery.noConflict();
(function($) {
"use strict";
// 保存前処理(編集)
kintone.events.on('app.record.edit.submit', function(event) {
var record = event.record;
// アプリB更新
event=名前.処理内容.関数.関数A(event);
return event;
});
})(jQuery);