使用Angularjs与backbone风格的对象绑定

Using Angularjs binding with Backbone-style objects

本文关键字:对象 绑定 风格 backbone Angularjs 使用      更新时间:2023-09-26

我正在制作一个使用Parse.com后端和Angularjs前端的应用程序。Parse使用带有getter和setter的backbone风格对象,例如,我不能仅仅用ng-model="object.property"将对象属性连接到文本字段。属性在对象中可用。属性,但我认为它不应该被直接设置。现在,我正在做这样的事情(假设keys是属性名称的列表):

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();

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

我不会乱用model# set方法,因为它涉及到内部的东西,但我不能想到任何错误使用模型。属性而不是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

你可以删除ParseSDK并使用这个AngularJS模块:https://github.com/jimrhoskins/angular-parse

有一些事情是不理想的AngularJS中现有的Parse JavaScript API。现有的API是以主干模型为基础进行建模,主要问题是设置参数的使用而不是对象属性。实例。集("财产"、"价值")不太适合像ng-model

这样的东西

相反,角解析松散地基于Spine模型,其中使用对象上直接定义的属性。为了方便在定义模型时,它是通过提供类来"配置"的名称(在Parse中定义)以及哪些属性是其中的一部分类。

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