2013-11-22 49 views
1

我想根據提供的參數將JSONStore加載到適配器映射的加載函數中。 讓我更好地解釋它。IBM Worklight 6.0 - 將參數傳遞給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) 

正如你可以在上面的代碼中看到,帕拉姆地區被傳遞給適配器集合初始化後,也被它應該在我的應用程序生命週期改變,所以有區域讓我們說是南方,其他地方是北方等等。

我意識到,即使在創建存儲庫後更改此值,適配器getEmployee中的映射加載函數(請參見下文)始終會獲取該區域在jsonstore初始化時包含的值,無論我更改區域變量值稍後。貌似適配器結合的conf在收集創建時獲得,並不會改變它

function getEmployee(data) { 
    WL.Logger.info('Show param:'+data); 
    return WL.Server.invokeSQLStatement({ 
     preparedStatement : selectStatement, 
     parameters : [] 
    }); 
} 

有沒有辦法參數傳遞給Jsonstore加載功能的商店被初始化後,可以改變嗎?

我想避免關閉並再次啓動收集以節省時間和資源。

順便說一下,我真正需要的是基於綁定到集合的適配器參數,從數據庫加載的內容具有靈活性。

回答

4

嘗試類似:

WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).adapter.load.params = ['...'] 

調用WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).load()之前。

如果您想要更大的靈活性,您可以隨時致電WL.Client.invokeProcedure並在onSuccess回撥中撥打電話。 push: false部分將確保JSONStore瞭解添加的數據與後端數據保持同步。這意味着您撥打電話時不會顯示這些文件:WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).getPushRequired()WL.JSONStore.get(EMPLOYEE_COLLECTION_NAME).push()