如何让Kendo observable.get仅返回原始对象数据?
如何获取Kendo ObservableObject中不带额外属性的原始对象?
当使用kendo.data.ObservableObject.get()获取对象时,返回的对象会被框架自动添加uid、_events等额外属性,无法直接拿到最初传入的纯数据对象。
示例代码
var observable = new kendo.data.ObservableObject(); var myCar = {make: "toyota", model: "camry"}; observable.set("car", myCar); var carVar = observable.get("car"); console.log(carVar); // 输出包含uid、_events等附加属性的对象
解决方法
使用内置的
toJSON()方法
Kendo的Observable对象提供了toJSON()方法,专门用于返回剔除框架附加属性的纯数据对象,这是最推荐的方式:var cleanCar = observable.get("car").toJSON(); console.log(cleanCar); // 仅输出{make: "toyota", model: "camry"}手动复制原始属性
如果需要自定义属性筛选逻辑,可以基于原始对象的属性列表,从Observable对象中提取对应值:var originalCar = {make: "toyota", model: "camry"}; observable.set("car", originalCar); var cleanCar = {}; Object.keys(originalCar).forEach(key => { cleanCar[key] = observable.get("car")[key]; }); console.log(cleanCar);JSON序列化反序列化
利用JSON的序列化特性,自动过滤掉不可枚举的附加属性(注意此方法会丢失函数等不可序列化的内容):var carVar = observable.get("car"); var cleanCar = JSON.parse(JSON.stringify(carVar)); console.log(cleanCar);
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

