使用Angularjs绑定Backbone样式的对象

时间:2013-04-03 02:17:33

标签: javascript backbone.js angularjs parse-platform

我正在使用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();

有人能想出更好的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分: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

我想这两种方法可以做你想要的。

答案 1 :(得分:0)

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

  

有一些事情并不理想   AngularJS中现有的Parse JavaScript API。现有的API是   以Backbone Models为模型,主要问题是使用setter   而不是对象属性。 instance.set(&#39; property&#39;,&#39; value&#39;)   并不适合像ng-model这样的东西

     

相反,角度解析松散地基于Spine Models   使用直接在对象上定义的属性。方便   这个,在定义一个模型时,它被配置了#34;通过提供课程   name(在Parse中定义)以及属性的一部分   那个班。

     

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