utilizando usuario una programar por matematicas macro llamar hacer funciones funcion definidas crear con como javascript angularjs angularjs-scope angularjs-resource

javascript - usuario - agregar una función personalizada en $ resource angular



crear una funcion con macros (3)

Creo que deberías mirar la forma de transformResponse respuesta.

Por cierto, ¿qué versión de angularjs usas?

Esta pregunta ya tiene una respuesta aquí:

Tengo un recurso angular que va algo como esto.

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 } } ); });

Ahora quiero tener un nombre completo en la vista, ¿puedo agregar un método para que cuando haga esto?

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

En lugar de hacer lo siguiente en HTML.

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

hago esto

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

¿Hay alguna manera de agregar esta propiedad al $resource ?


Puedes agregarlo como una propiedad usando transformResponse, pero puedo sugerir que solo agregues un método a cada objeto que devuelva el nombre y el apellido combinados:

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; });

Luego use:

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

Cualquier función agregada usando prototipo se agregará a cada objeto devuelto por su Servicio. Es una excelente manera de agregar métodos de ayuda si necesita realizar una configuración complicada de las propiedades del servicio.


después de jugar por un tiempo con angular, creo que un filtro de clientes sería un enfoque mucho más inteligente, en lugar de agregar una propiedad en $ resource.

Aquí es cómo hacer un filtro.

app.filter(''getFullName'', function () { return function (input) { if (input) { return input.first_name + '' '' + input.last_name; } else { return ''default''; } }; });