ListModel中的数据可以看作是一个Object,可以使用Object中的方法,常用方法如下图。
但在创建新的对象和添加数据时,却和常规的Object不一致,需要特殊处理,代码如下。
property var listModel: ListModel{}
function testModel(){
var ob={};
ob.name = "11";
ob.age =18;
ob.detail2 = {}
listModel.append(ob);
var data = listModel.get(0);
//修改属性成功
var t1 ={"b":"bbbb"}; //先定义对象
var t2 ={};
t2.info = t1;
data.detail2 = t2; //再使用对象
console.log("2", JSON.stringify(data));
//修改属性失败
data.detail2.info ={"c":"cccc"}; //直接串联写入数据无效
console.log("3", JSON.stringify(data));
//添加属性失败
// data.detail1 ={}; //添加对象数据失败
// data.detail1.info ={"a":"aaaa"}; //TypeError
// console.log("11", JSON.stringify(data));
//添加属性成功
var dataStr = JSON.stringify(data); //通过序列化添加数据
var data2 = JSON.parse(dataStr);
data2.detail1 ={};
data2.detail1.info ={"a":"aaaa"};
data = data2;
console.log("11", JSON.stringify(data));
}
总结:
- ListModel支持添加和获取Object对象。
- ListModel不支持级联设置参数(如data.detail2.info)。