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

标签 angularjs

我借助 Angular 的 $resource 服务以数组形式获取数据。该数组的每个元素都是一个资源对象。所以我可以使用这些对象的 $save 和 $update 等方法。在 View 中,我借助 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           
}

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

最佳答案

假设您的资源类称为 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 .$资源。事实上,他们正在处理一个全新的对象,而你试图保存一个现有的对象,这一事实是无关紧要的。 Angular 不知道其中的区别。

关于angularjs - ng-repeat 将资源对象转换为简单对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469266/

相关文章:

angularjs - 那是什么 app.run(appRun);在 AngularJS 中用于什么?

angularjs - 如何在 Angular 指令中设置插值?

angularjs - 在 ng-repeat 中迭代对象或数组

javascript - 使用一个文件集成整个 Yeoman、AngularJS 项目

javascript - ngAnimate 依赖导致应用程序不显示

javascript - angularjs 什么时候应该使用指令

angularjs - 为什么 `filter` 会多次触发?

javascript - JSFiddle 不运行我的 AngularJS 代码

javascript - 如何在 Angular 中更新 ng-if?

javascript - moment.js 中的日期时差