当前位置: 首页 > 面试题库 >

Angular-使用自定义方法扩展$ resource子对象

邢献
2023-03-14
问题内容

在大多数情况下,<custom-resource>.query()方法的结果是一个数组,可以使用以下(工厂)代码通过某些方法(业务逻辑)轻松扩展该数组:

var Data = $resource('http://..');
Data.prototype.foo = function() {return ...};

这非常适合与ng-repeat / ng-class一起使用,如下所示:

<tr ng-repeat="item in responseData" ng-class="{warning: item.foo()}">..</tr>

我的问题是, 每个列表响应都封装 在一个对象中,该对象除了实际列表之外,还具有一些元属性(排序信息等),因此返回的最终对象是这样的:

{ order_field: "name", items: [{..}, {..},{..}] }

现在,如何使用ng-repeat / ng-class做与以前相同的事情?

<tr ng-repeat="item in responseData.items" ng-class="????">..</tr>

先前的方法将无效,因为“ foo”方法是responseDataitem对象上定义的,而不是在对象上定义的

有什么方法可以直接扩展用于实例化列表中对象的基类?

谢谢!


问题答案:

transformResponse正如约翰·莱德贝特(John Ledbetter)在另一个答案中所说,我以前已经发现了这个问题,解决方案似乎是。

无论如何, 如果您需要保留整个对象 ,并且还 需要 在“项目”中的数组中填充资源实例,则可以使用以下技巧来做到这一点:

以约翰的回答为例,并对其进行一些修改:

angular.module('foo')

  .factory('Post', ['$resource', function($resource) {

    var Post = $resource('/api/posts/:id', { id: '@id' }, {
      query: {
        method: 'GET',
        isArray: false, // <- not returning an array
        transformResponse: function(data, header) {
          var wrapped = angular.fromJson(data);
          angular.forEach(wrapped.items, function(item, idx) {
             wrapped.items[idx] = new Post(item); //<-- replace each item with an instance of the resource object
          });
          return wrapped;
        }
      }
    });

    Post.prototype.foo = function() { /* ... */ };

    return Post;
  }]);


 类似资料:
  • 问题内容: 因此,我正在用Java开发DVD租赁系统,并且遇到了视图问题。这是我的代码: 现在,Member和Item只是我制作的代表用户(成员)和电影/游戏(Item)的对象类。 和 我的问题是,我对如何创建自定义的,覆盖的“ SetValueAt()”方法以用“成员/项”中的信息填充JTables感到困惑。另一个问题是侦听器类中的所有空if语句。我不确定如何执行它们。如果有人可以就任何这些问题

  • 目前 Mars 支持自定义 xlog 的加密部分和长短连协议加解包部分。需要强调的是想要自定义这些扩展,需要在本地编译 Mars 才可以,编译方法见 Mars Android 接入指南 和 Mars iOS/OS X 接入指南 中的编译部分。切记,在自定义实现时,可以增加函数,但是不能删除头文件中已有的函数,也不能修改头文件中的函数原型。 自定义 xlog 加密 xlog 的具体实现可以参考微信终

  • 注意:TPR已经停止维护,kubernetes 1.7及以上版本请使用CRD。 自定义资源是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义,所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作。 自定义资源 Kubernetes1.6版

  • 用户自定义扩展是用户自己创建的 JavaScript 文件,对 Selenium IDE 现有的功能进行定制以及功能扩展。通常这种定制和扩展是以自定义命令的形式来体现的,当然也不仅限于命令。 这里可以找到很多有用的扩展。 注意:这部分信息已经过时,我们将很快修改。 也许最受欢迎的 Selenium IDE 扩展就是流程控制,流程控制扩展将提供 while 循环和条件判断。这个扩展是 goto_se

  • 本文向大家介绍Laravel框架中扩展函数、扩展自定义类的方法,包括了Laravel框架中扩展函数、扩展自定义类的方法的使用技巧和注意事项,需要的朋友参考一下 一、扩展自己的类 在app/ 下建立目录 libraries\class  然后myTest.php 类名格式 驼峰 myTest 在 app/start/global.php 用 make 载入 二、扩展自己的函数 在app/ 下建立目录

  • 当我们在开发某些东西时,经常会需要我们自己的 error 类来反映在我们的任务中可能出错的特定任务。对于网络操作中的 error,我们需要 HttpError,对于数据库操作中的 error,我们需要 DbError,对于搜索操作中的 error,我们需要 NotFoundError,等等。 我们自定义的 error 应该支持基本的 error 的属性,例如 message,name,并且最好还有