【问题标题】:Chaining post and get in resolve with Restangular链接帖子并使用 Restangular 解决问题
【发布时间】:2014-12-27 17:20:10
【问题描述】:

我定义了一个 Restangular 服务:

var dashboards = angular.module('models.dashboards', ['restangular']);

dashboards.factory('Dashboards', function(Restangular) {
    var Dashboards = Restangular.service('dashboards');
    Restangular.extendModel('dashboards', function (model) {
        //model.newMethod = function() {
        //}
    });
    return Dashboards;
});

在解析中,我想在 POST 响应的 Location 标头中返回的 URL 上调用 POST 后跟 GET。 POST 不需要任何参数。

resolve: {
    'drafts': ['Dashboards', function (Dashboards) {
        return Dashboards.post().then(function(result) {
            return Dashboards.oneUrl('newDash', result.data).get();
        });
    }]
},

我配置了一个响应提取器,将位置标头设置为 POST 请求的响应数据。

RestangularProvider.setFullResponse(true);

RestangularProvider.setResponseExtractor(function(data, operation, route, url, response, deferred) {
    var returnData = data;

    if(operation === 'post') {
        console.log(response.headers());
        returnData = response.headers().location;
    }

    return returnData;
});

我可以看到返回 201 并带有正确 Location 标头的 POST 请求。但我没有看到 GET 请求。相反,我得到了这个例外:

 TypeError: Cannot set property 'singleOne' of undefined
    at $get.okCallback (restangular.js:1145)
    at processQueue (ionic.bundle.js:20962)
    at ionic.bundle.js:20978
    at Scope.$get.Scope.$eval (ionic.bundle.js:22178)
    at Scope.$get.Scope.$digest (ionic.bundle.js:21994)
    at Scope.$get.Scope.$apply (ionic.bundle.js:22282)
    at done (ionic.bundle.js:17439)
    at completeRequest (ionic.bundle.js:17629)
    at XMLHttpRequest.requestLoaded (ionic.bundle.js:17570)

【问题讨论】:

    标签: angularjs restangular


    【解决方案1】:

    我在创建服务时犯了一个错误。扩展时忘记返回model 对象:

    var dashboards = angular.module('models.dashboards', ['restangular']);
    
    dashboards.factory('Dashboards', function(Restangular) {
        var Dashboards = Restangular.service('dashboards');
        Restangular.extendModel('dashboards', function (model) {
            //model.newMethod = function() {
            //}
            return model;
        });
        return Dashboards;
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2014-09-16
      • 2020-10-15
      • 2019-03-29
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2013-05-23
      相关资源
      最近更新 更多