不确定它是一个错误还是对事物如何工作的误解:
- 禁用单实例模式
- 创建一个新的解析对象(或从服务器查询一个)并填充属性
- 制作对象的副本(例如,如果您正在编辑表单上的属性并想要保存/放弃更改的选项)
- 副本为空....
使用 parse-js-sdk 1.9.2 和 angular 1.4.8
//comment out the following line and it works ok
Parse.Object.disableSingleInstance();
var parseObjClass = Parse.Object.extend('Comments', {
// Instance methods
initialize: function (attrs, options) {}
},
{});
['name', 'desc'].forEach(function (item) {
Object.defineProperty(parseObjClass.prototype, item, {
get: function () {
return this.get(item);
},
set: function (aValue) {
return this.set(item, aValue);
}
});
});
var parseObj = new parseObjClass();
parseObj.name = 'Hello World'
parseObj.desc = 'Test Object'
console.log('original is ' + JSON.stringify(parseObj));
//--> original is {"name":"Hello World","desc":"Test Object"}
var objCopy = angular.copy(parseObj);
console.log('copy is ' + JSON.stringify(objCopy));
//--> copy is {}
这是一个说明https://plnkr.co/edit/UjWe9dl6D6Qkx9ihBSMC的 plunker
背景:我们正在使用 disableSingleInstance 模式,因为我们有一个移动应用程序和一个 Web 应用程序,它们可以与相同的数据库行(时间表数据)进行交互,并且遇到 js-sdk 并不总是具有最新版本的数据的问题......