使用Titanium Appcelerator设置属性列表

时间:2011-02-28 10:15:08

标签: properties titanium appcelerator

我在OS X上使用最新的Mobile SDK(1.6)。 我有这段代码:

var globalArray = [
        {title:'foo',value:'yes'},
        {title:'bar',value:'no'}
]; 

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
Titanium.App.Properties.getList('globalArrayProperty')[0].value = 'it works!';
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);

我简化了它,以便我可以解释问题所在。 所以,我创建了一个包含几个对象的数组。 然后,我根据此数组设置属性,然后影响第一个对象的新值。 但是,当我把显示器称为属性时,而不是显示“它的工作原理!”字符串,它显示最初的'是'。

我尝试添加几行:

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
var arr = Titanium.App.Properties.getList('globalArrayProperty');
arr[0].value = 'it works!';
// This works
Titanium.API.info('first value with arr: ' + arr[0].value);
// This doesn't work
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);

所以中间变量'arr'获取属性,设置它但不能对属性应用修改。

我错过了什么吗?

谢谢,

问候。

1 个答案:

答案 0 :(得分:3)

我认为你需要在更新数组后再次设置属性列表

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
var arr = Titanium.App.Properties.getList('globalArrayProperty');
arr[0].value = 'it works!';
// This works
Titanium.API.info('first value with arr: ' + arr[0].value);

// save changes to property list
Titanium.App.Properties.setList('globalArrayProperty',arr);

// This doesn't work
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);