[英]IBM Worklight 6.0 - Pass parameter to JSONStore load function
我想基於提供的參數將JSONStore加載到適配器映射的加載函數。 讓我更好地解釋一下。
JSONStore初始化是這樣的:
collections[EMPLOYEE_COLLECTION_NAME] = {
searchFields : {ENAME: 'string', EMPNO:'integer'},
//-- Start optional adapter metadata
adapter : {
name: 'EmployeesDB',
add: 'addEmployee',
remove: 'deleteEmployee',
replace: 'updateEmployee',
load: {
procedure: 'getEmployee',
params: [region],
key: 'resultSet'
}
}
//-- End optional adapter metadata
};
//Initialize the people collection
WL.JSONStore.init(collections, options)
正如您在上面的代碼中看到的那樣,即使將param區域傳遞給適配器集合init之后,它是否應該在我的應用程序生命周期中發生變化,因此有時候區域讓我們說是SOUTH,其他就是NORTH等等。
我意識到即使我在創建存儲之后更改了這個值,適配器getEmployee(見下文)中的映射加載函數總是得到jsonstore初始化時包含的區域的值,而不管我以后更改區域變量值。 看起來適配器綁定conf在集合創建時獲得,並且永遠不會更改它
function getEmployee(data) {
WL.Logger.info('Show param:'+data);
return WL.Server.invokeSQLStatement({
preparedStatement : selectStatement,
parameters : []
});
}
有沒有辦法將參數傳遞給Jsonstore加載函數,該函數可以在初始化存儲后更改?
我想避免關閉並再次初始化集合以節省時間和資源。
順便說一句,我真正需要的是根據綁定到集合的適配器參數靈活處理從數據庫加載的內容。
嘗試類似的東西:
WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).adapter.load.params = ['...']
在調用WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).load()
之前。
如果您想要更靈活,可以隨時調用WL.Client.invokeProcedure
並在onSuccess
回調中調用: WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).add(['...'], {push: false})
。 push: false
部分將確保JSONStore了解添加的數據是與后端數據保持同步的。 這意味着您在調用時不會顯示這些文檔: WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).getPushRequired()
或WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).push()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.