“在尝试更新datagrid

时间:2015-12-15 02:23:48

标签: javascript jquery datagrid local-storage jquery-easyui

在页面加载时,我想从本地存储加载JSON,以便能够更新交互式“购物车”。当用户退出页面并返回时,我希望项目仍然存在。

在交互式购物车运行结束时,我将数据保存到本地存储:

localStorage.setItem("datastr", JSON.stringify(data));

这很好用,因为当我加载页面时,我会检查本地存储中是否有数据并记录其详细信息。

if (localStorage.getItem("datastr") !== null) {
    console.log("data found");

然后我将这些项添加到数组中:

data.rows.push({
            name:loadedarray.name,
            quantity:loadedarray.quantity,
            price:loadedarray.price
        });

但是当我尝试用项目更新数据网格时,

$('#cartcontent').datagrid('loadData',loadedarray);

它给了我以下错误:

"Cannot read property 'options' of undefined"

我认为这个错误意味着它试图读取不存在的东西,但我不确定它出错的地方。

Here's the full JS file如果这有帮助的话。

1 个答案:

答案 0 :(得分:0)

这是我使用您提供的数据构建的工作测试。希望您可以通过比较我的代码来找到您的问题。

function setLocalStorage() {
  var data = [];
  data.push({name: "foo", quantity: 10, price: 4.99});
  data.push({name: "bar", quantity: 4, price: 9.99});
  localStorage.setItem("datastr", JSON.stringify(data));
}

function getLocalStorage() {
  if (localStorage.getItem("datastr") !== null) {
    var loadedarray = JSON.parse(localStorage.getItem("datastr"));
    var data = [];
    data.rows = [];
    for (var i = 0; i < loadedarray.length; i++) {
      var curr = loadedarray[i];
      data.rows.push({
        name: curr.name,
        quantity: curr.quantity,
        price: curr.price
      });
    }
    for (var j = 0; j < data.rows.length; j++) {
      var curr = data.rows[j];
      console.log("row " + j + ": " + curr.name + " " + curr.quantity + " $" + curr.price);
    }
  }
}