2

我在 Angular 的 $resource 服务作为数组的帮助下获取我的数据。该数组的每个元素都是一个资源对象。所以我可以使用这些对象的 $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           
}

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

4

1 回答 1

2

假设您的资源类称为 Appointment,您应该能够做到:

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

大概您的 Appointment 资源如下所示(即,它正确地将某种 id 属性从现有对象映射到 URL 参数):

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

如果您的约会对象(即由您的 API 处理的底层 JSON 对象)具有名为id. 如果它被称为其他名称(或者如果您的 URL 中有多个路径变量),您只需更改第二个参数以将正在保存的对象的所有属性(以“@”开头的值)映射到 URL路径变量(在你的 URL 中以 ':' 开头的东西)。

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

于 2013-10-19T18:44:43.820 回答