【问题标题】:IBM Worklight 6.0 - Pass parameter to JSONStore load functionIBM Worklight 6.0 - 将参数传递给 JSONStore 加载函数
【发布时间】:2013-12-07 18:33:04
【问题描述】:

我想根据提供的参数将 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)

正如您在上面的代码中看到的那样,即使在将参数区域传递给适配器集合 init 之后,它是否应该在我的应用程序生命周期中发生变化,所以有时区域是 SOUTH,其他区域是 NORTH等等。

我意识到,即使我在创建 store 之后更改了这个值,适配器 getEmployee 中的映射加载函数(见下文)总是获取初始化 jsonstore 时包含的区域值,无论我更改区域变量值稍后的。看起来适配器绑定 conf 在集合创建时得到,并且永远不会更改它

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

有没有办法将参数传递给 Jsonstore 加载函数,在存储初始化后可以更改?

我想避免关闭并再次初始化集合以节省时间和资源。

顺便说一下,我真正需要的是根据绑定到集合的适配器参数,对从数据库加载的内容具有灵活性。

【问题讨论】:

    标签: adapter ibm-mobilefirst jsonstore


    【解决方案1】:

    尝试类似:

    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() 时,它不会显示这些文档。

    【讨论】:

      猜你喜欢
      • 2014-08-07
      • 2013-07-18
      • 2013-08-13
      • 2014-08-10
      • 2015-06-07
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多