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

在角度$ resource上添加自定义函数

姜乐语
2023-03-14
问题内容

我有一个像这样的角度资源

app.factory('User', function ($resource) {
    return $resource(
        '/api/user/:listCtrl:id/:docCtrl/', {
            id: '@id',
            listCtrl: '@listCtrl',
            docCtrl: '@docCtrl'
        }, {
            update: {
                method: 'PUT'
            },
            current: {
                method: 'GET',
                params: {
                    listCtrl: 'current'
                }
            },
            nearby: {
                method: 'GET',
                params: {
                    docCtrl: 'nearby'
                },
                isArray: true
            }
        }
    );
});

现在我想在视图中有全名,我可以添加一个方法以便在执行此操作时

$scope.user = User().current();

而不是在html中执行以下操作

<p>{{ user.first_name }} {{ user.last_name }}</p>

我这样做

<p>{{ user.get_full_name }}</p>

有没有办法将此属性添加到$resource


问题答案:

您可以使用transformResponse将其添加为属性,但是我建议您仅向每个返回组合的名字和姓氏的对象添加一个方法:

app.factory('User', function ($resource) {
    var User = $resource(
        '/api/user/:listCtrl:id/:docCtrl/', {
            id: '@id',
            listCtrl: '@listCtrl',
            docCtrl: '@docCtrl'
        }, {
            update: {
                method: 'PUT'
            },
            current: {
                method: 'GET',
                params: {
                    listCtrl: 'current'
                }
            },
            nearby: {
                method: 'GET',
                params: {
                    docCtrl: 'nearby'
                },
                isArray: true
            }
        }
    );
    // add any methods here using prototype
    User.prototype.get_full_name = function() {
        return this.first_name + ' ' + this.last_name;
    };
    return User;
});

然后使用:

<p>{{ user.get_full_name() }}</p>

使用原型添加的所有功能都将添加到Service返回的每个对象上。如果需要复杂的获取或设置服务属性,这是添加帮助程序方法的好方法。



 类似资料:
  • 我需要添加自定义数据属性来选择选项。我需要它,因为在更改时,我希望基于选定的属性(而不是值)触发操作 这是我正在使用的代码 例如,当我为数据属性提供静态值时,它可以工作,以下工作没有问题(请注意,data-isocode具有静态值) 然而,当我尝试在数据等码中使用变量时 它向我抛出以下错误 如何使用Angular传递数据属性(如jQuery),并使用FormBuilder获取值?

  • 问题内容: 我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如 该解决方案对我有用,可以以“漂亮”的方式重用代码。 但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。 这可能是什么原因?我是否缺少修改标准对象原型的东西? 注意:我很

  • 我第一次尝试在request angular js中添加customer头,但遇到以下错误 Angular.js:10671错误:在“XMLHttpRequest”上执行“set requestheader”失败:“x-api-key:”不是有效的HTTP标头字段名。 下面是我的代码,在最高的“应用程序”级别: 我做错了什么/错过了什么/不明白什么?我如何将这个头添加到所有(甚至一个)请求中?

  • 我有一本书。我想用作表情的png图像。有没有办法将此映像作为emote添加到服务器?我认为这应该在Guildjoin事件中完成。 谢谢你的回答!

  • 我正试图向SonarQube添加自定义度量,但每次运行传感器时都会出现以下错误: 我所做的是在管理接口中创建一个自定义度量,将其valuetype设置为Integer,并使用其键将计算值添加到传感器中的。

  • 我有一个表单,它要求两个字段中至少有一个字段具有值才能有效。现在,我已经构建了一个指令“KeywordandAuthor”来处理此验证。我已经成功地让它正确地检查任何一个字段是否有值,如果有,则将验证设置为true。我不确定如何将其他字段的验证设置为true。以下是指令的当前代码: 如何将siblingElem的有效性设置为true? **编辑** 这是我想要的工作解决方案。 要实现的关键点是,n