0

我正在开发一个使用 Parse.com 后端和 Angularjs 前端的应用程序。Parse 使用带有 getter 和 setter 的 Backbone 样式对象,例如,我不能只将对象属性连接到带有ng-model="object.property". 这些属性在 object.attributes 属性中可用,但我相信这并不意味着直接设置为。现在,我正在做类似的事情(假设键是属性名称的列表):

for (var i = 0; i < keys.length; i++) {
  object[keys[i]] = object.get(keys[i]);
}

然后让事情发生在 Angular 中的对象上,然后:

for (var i = 0; i < keys.length; i++) {
  object.set(keys[i], object[keys[i]]);
}
object.save();

谁能想到更好的方法来处理这个问题?

4

2 回答 2

0

我不会弄乱 Model#set 方法,因为它涉及内部的东西,但我想不出任何错误使用 model.attributes 而不是 Model#get 如果它对你来说更容易的话。
也就是说,我认为你更喜欢那些:

// Model#get
myModel.toJSON(); // returns a clone of model.attributes, cool eh?

// Model#set
myModel.set(JSON); // Model#get doesn't support it, but you can set several attributes at the same time

我猜这两种方法可以满足您的要求。

于 2013-04-03T08:31:44.537 回答
0

您可以删除 ParseSDK 并改用此 AngularJS 模块:https ://github.com/jimrhoskins/angular-parse

AngularJS 中现有的 Parse JavaScript API 有一些不理想的地方。现有的 API 是在 Backbone Models 之后建模的,主要问题是使用 setter 而不是对象属性。instance.set('property', 'value') 不太适合 ng-model 之类的东西

相反,角度解析松散地基于使用直接在对象上定义的属性的 Spine 模型。为了促进这一点,在定义模型时,通过提供类名(如 Parse 中定义的)以及哪些属性是该类的一部分来“配置”它。

Angular-parse 还对任何进行网络调用的方法使用 Promise。

于 2015-01-17T19:49:56.610 回答