2012-10-23 46 views
1

Possible Duplicate:
HTML5 localStorage: check if item isset检查localStorage的值存在

我使用localStorage的制定煎茶触摸2个应用程序。

我从本地存储的值是这样的:

var localStore = Ext.getStore('localStore'); 
localStore.getAt(0).data.name1 //get the value for key 'name1' 

但在第一次访问本地存储是空的。我如何检查密钥是否存在? 当我做:

if(localStore.data.name1 === null) 

我得到:

Uncaught TypeError: Cannot read property 'name1' of undefined 
+0

真的吗? http://www.bennadel.com/blog/2105-Exploring-HTML5-s-localStorage-Persistent-Client-Side-Key-Value-Pairs.htm –

+0

我认为有一个区别,因为我想使用sencha touch,而不是原生javascript功能... – Nico

+0

无论如何,这里的问题是你做了两件不同的事情。在第一种情况下(localStore.getAt(0).data.name1),您正在访问商店的第一条记录的数据,然后访问该记录的'name1'属性,这是合理的。但是,然后(localStore.data.name1),您试图直接访问商店的数据,并且此属性不存在。因此localStore.data.name1返回undefined。 –

回答

0

请参见本jsFiddle例子。 localStore.getItem(名称)。注意getItem是一个函数。

var obj = {foo: 'bar'}; 

// set 
localStorage.setItem('testObject', JSON.stringify(obj)); 

// get 
var get = localStorage.getItem('testObject'); 

console.log(JSON.parse(get)); 

+1

当我尝试这个时,我总是得到一个空值。什么是localStorage?我的localStore是sencha触摸本地存储代理,没有方法getItem:Uncaught TypeError:Object [object Object]没有方法getItem – Nico

+0

啊,我明白了。我想我误解了这个问题。所以只有第一次尝试是未定义的。如果是这样,我会尝试if(typeof localStorage.getItem ==='function')来查看它是否在使用之前定义。 – krg

+0

感谢您的帮助,我发现如果不存在数据,localStore.data.length为0,如果数据存在,则为> 0。我想我会用那个... – Nico