上周我尝试了很多很多方法,但我无法让 JSONStore 回调持续触发。我正在使用运行 Worklight 5.0.6 的 Mac。我将提供我认为最简单的示例:使用硬编码值从 Worklight JSONStore 生成器创建的代码。
在初始化集合并调用 findAll() 之类的函数后,不会触发成功或失败回调。我有回调工作,但不是一致或可靠的。我无法解释为什么它大多不起作用。
我已经尝试过使用 jQuery 承诺框架和不推荐使用的回调方法。在这两种情况下,回调都不会被调用。我还尝试在 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