ng-repeat将资源对象转换为简单对象

时间:2013-10-19 18:03:44

标签: angularjs

我在Angular的$ resource服务作为数组的帮助下获取我的数据。该数组的每个元素都是一个Resource-Object。所以我可以使用$ save和$ update等方法。在视图中,我借助ng-repeat指令代表我的数组,如:

<div ng-repeat="appointment in object.appointments" ng-click="editAppointment(appointment)">

在这里我遇到了麻烦。我在editAppointment-Method中获得的约会对象是一个简单的对象。没有资源对象了。所以我不能使用像上面提到的有用的方法。

$scope.editAppointment= function(appointment){
    console.log(appointment); // > Object
    console.log(object.appointments); // > Array of Resource           
}

还有人注意到这个问题吗?可能是它的一个错误,但我无法想象。

1 个答案:

答案 0 :(得分:2)

假设您的资源类名为Appointment,您应该能够:

$scope.editAppointment= function(appointment){
   new Appointment(appointment).save();         
}

大概你的约会资源看起来像下面这样(即它正确地将现有对象的某种id属性映射到URL参数):

var Appointment = $resource('/appointment/:appointmentId', {appointmentId:'@id'});

如果您的约会对象(即您的API处理的基础JSON对象)具有名为id的ID属性,则会出现这种情况。如果它被称为其他东西(或者如果你的URL中有多个路径变量),你只需要改变第二个参数,将所保存对象的所有属性(以'@'开头的值)映射到URL路径变量(URL中以':'开头的东西)。

在此处查看信用卡示例中保存新卡的位置:http://docs.angularjs.org/api/ngResource。$ resource。他们正在处理一个全新的对象并且你试图保存现有对象的事实是无关紧要的。 Angular并不知道其中的区别。