先週、私はこれを非常に多くの方法で試しましたが、JSONStore コールバックを一貫して起動させることができません。Worklight 5.0.6 を実行している Mac で作業しています。最も単純な例と思われるものを提供します。Worklight JSONStore ジェネレーターからハードコーディングされた値を使用して作成されたコードです。
コレクションを初期化し、findAll() のような関数を呼び出した後、成功コールバックも失敗コールバックもトリガーされません。私はコールバックを機能させましたが、一貫性や信頼性はありません。なぜそれがほとんど機能しないのか説明できません。
jQuery promise フレームワークと非推奨のコールバック メソッドの両方を使用して、これを試しました。どちらの場合も、コールバックは呼び出されません。また、JSONStore で destroy() を呼び出して、新規作成を強制しようとしました。
function initContactsCollection() {
if ((WL.Client.getEnvironment() === 'iphone' ||
WL.Client.getEnvironment() === 'ipad' ||
WL.Client.getEnvironment() === 'android') &&
typeof cordova !== 'undefined' &&
typeof WL.JSONStore !== 'undefined' &&
typeof jQuery !== 'undefined' &&
typeof jQuery.event.trigger === 'function') {
// var pwd = prompt('Enter your password');
var contacts = WL.JSONStore.initCollection("contacts",
{"agentId":"string","notes.isSuccessful":"boolean","firstName":"string","workPhone":"string","email1":"string","email2":"string"},
{
//password: pwd,
adapter : {
name: 'ams',
replace: 'updateContact',
remove: 'deleteContactNote',
add: 'addNewContact',
load: {
procedure: 'getContacts',
params: ["AA12345678910X-DB"],
key: 'contacts'
},
accept: function (data) {
return (data.status === 200);
}
}
});
contacts.promise
.done(function () {
WL.Logger.debug('[JSONStore] contacts is ready to be used.');
contacts.count().done(function(res){
if(res < 1){
customers.load();
}
});
})
.fail(function (errObj) {
WL.Logger.debug('[JSONStore]' + errObj.toString());
});
} else {
WL.Logger.debug('[JSONStore] Check your dependencies.');
}
} // end function