2013-06-11 167 views
0

有一个列表,因此:访问元素

var names_Array = []; 

var names_List = new WinJS.Binding.List(names_Array); 

我推入名单如下:

names_List.push({ name: "Joe Dowling", image: "image/Joe Dowling.png", ClientID: "1234" }); 
names_List.push({ name: "Esteban Flamenco ", image: "image/Esteban Flamenco.png", ClientID: "6666" }); 

我然后设置在本地存储列表中,这样:

window.localStorage.setItem('names_List', names_List); 

最后我得到的项目,作为这样的:

var test = window.localStorage.getItem('names_List'); 
    console.log(test); 

我希望能够在控制台中打印列表的元素。任何人都可以指导我这个。我试过使用names_List.getAt(index)方法,但无济于事。

+1

我假设你得到类似“[object Object]”的东西?看到http://stackoverflow.com/questions/3357553/how-to-store-an-array-in-localstorage –

回答

3

你几乎肯定会在这里混乱一点,因为localStorage只会存储字符串。任何其他类型的对象都将被转换为字符串。因此,您可能会得到类似[object Object],[object Object],[object Object],[object Object]的东西,这是将对象数组转换为字符串的结果。

最好的解决方法是使用JSON。

window.localStorage.setItem('names_List', JSON.stringify(names_List)); 
var test = JSON.parse(window.localStorage.getItem('names_List')); 

这会以更有意义的方式将对象转换为字符串,因此您将保留您的结构。

+0

已经尝试了你的代码,我得到这个错误:'不支持值参数中的循环引用'。我被告知它是关于:window.localStorage.setItem('names_List',JSON.stringify(names_List)); – user2363025

+0

这意味着你的列表包含一个对自身的引用或者一个引用自身的对象(一个DOM节点?),并且不能变成JSON。除非你消除自我引用,否则你将永远无法将其解决。 –

+0

@ Nathan Bubna我不明白我的列表如何包含对自身的引用。你能解释一切吗? – user2363025