用于 self 解析对象的 Javascript 帮助器,可与 Angulars $resource 等 Promise 一起使用

标签 javascript angularjs promise

Angulars $resource 具有强大的功能,可以返回注入(inject)值的对象并自动更新 View 。在 $resource 服务中是 Resource将解析结果复制到自身的对象 shallowClearAndCopy() .

我想链接从 $resource 返回的 promise ,并获得类似 Resource 对象的东西,该对象获取注入(inject)的延迟结果。 (编辑代码示例以返回对象并需要参数。)

var otherProperty = 'somethingChanging';
var lazyUser = $resource('/user/:userId').get({id:id});
var userDisplayNamePromise = lazyUser.$promise.then(transformResult);
function transformResult(user){
  return { displayName: user.firstname + ' ' + user.lastname,
           other: user[otherProperty]
         };
}

目前我必须做类似的事情

userDisplayNamePromise.then(updateDisplayUser);
function updateDisplayUser(displayName){$scope.user = displayName;}

我很想做类似的事情

$scope.user = something(userDisplayNamePromise);

我找不到任何可以帮助我以如此简单的方式使用 promise 的东西。有人有好的建议吗?

我在 github.com/burka/resolvling 上放置了一个基本的工作示例。但我无法想象以前没有人这样做过?

最佳答案

有一些标准方法可以转换 Angular 资源的响应。
这是一个fiddle
这里是documentation

transformResponse – {function(data, headersGetter)|Array.} – 转换函数或此类函数的数组。转换函数获取 http 响应正文和 header 并返回其转换后(通常是反序列化)版本。默认情况下,transformResponse 将包含一个函数,该函数检查响应是否看起来像 JSON 字符串并使用 angular.fromJson 对其进行反序列化。为了防止这种行为,请将transformResponse设置为空数组:transformResponse: []

这里是示例代码

angular.module('services', ['ngResource']).
factory("someService", function ($resource) {
    return $resource(
        '/', {}, {
        get: {
            method: 'GET',
            transformResponse: function(data, headers){
                //MESS WITH THE DATA
                data = {};
                data.coolThing = 'BOOM-SHAKA-LAKA';
                return data;
            }
        }
    }

    );
});

关于用于 self 解析对象的 Javascript 帮助器,可与 Angulars $resource 等 Promise 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844848/

相关文章:

this - 在 AngularJS 的 promise 中使用它

javascript - jQuery 变量选择器不适用于 find()

javascript - 如何在 ASP.NET Core 中为 webpack 包设置智能感知

javascript - $broadcast 在 ng Repeat 上被多次调用,即使从 Controller 调用一次

angularjs - ng-repeat 中的 Angular 性能

javascript - 在 AngularJS 中只返回数组的键

javascript - 如何使用JS获取HTTP响应头?

javascript - 如何将第三方包导入Meteor?

javascript - 如何在 Javascript/Node JS 中使用 Promise 等待函数执行以等待其回调

node.js - mongodb 原生的 promise