在循环中向worklight jsonstore添加文档

时间:2014-06-05 12:18:04

标签: javascript ibm-mobilefirst jsonstore

我想动态生成列表条目,并同时将它们作为jsonstore文档添加到我的本地商店。

当我这样做的时候:

     var j=0;
       while(j<7) {

        /* populating our jsonstore */   
        accessor.add({stuff_to_add})
        .then(function(){})

        /* showing it to the user */
        $('<li>').attr({attributes}).html('html').appendTo('element');   
        j++;

       }

只添加了一个文档,因为我认为worklight不会自动将添加请求放入队列中,如果前一个没有解析,则取消最后一个,或者沿着这些行取消。

所以当我这样做的时候:

      var j=0;
       while(j<7) {

        /* populating our jsonstore */   
        accessor.add({stuff_to_add})
        .then(function(){

        /* showing it to the user */
        $('<li>').attr({attributes}).html('html').appendTo('element');   
        j++;   })

       }

Mozilla完全崩溃,甚至没有成功停止脚本我不明白为什么因为它应该只调用add函数多次=(调用时间(accessor.add)/循环时间)应该是有限。

编辑:实际上,如果我们假设worklight没有将文档放入添加队列中,则每次循环循环时都会替换初始添加请求,并且它永远不会完成,从而解释崩溃。

编辑2:尝试使用递归函数调用自身,直到j达到7而不是循环

2 个答案:

答案 0 :(得分:2)

编辑2胜:

var j=0;
       while(j<7) {

        /* creating the ui*/
        $('<li>').attr({attributes}).html('html').appendTo('element');
        j++;

       }

       /* populating jsonstore */

      add_documents(0,stuff_to_add);

其中add_documents(0,stuff_to_add)定义如下:

add_documents = function(n,stuff_to_add){ 

    if(n<7){
        accessor.add({stuff_to_add})
        .then(function(){alert(n);add_documents(n+1,stuff_to_add);});
    }
    else
    {return true;}
};

答案 1 :(得分:1)

add API可以采用JSON对象数组,例如:

var data = [{name: 'carlos'}, {name: 'mike'}];

WL.JSONStore.get('collection').add(data)

.then(function () {

  /*update the UI here*/

  var len = data.length;
  while (len--) {
    console.log(data[len].name);
  }

})

.fail(function (err) {
  /*handle failure*/
});