簡體   English   中英

無法從Angular $ resource獲得響應

[英]Can't get response from Angular $resource

我有一家工廠:

.factory('CompanyRolesResource', function($resource, FdConfig) {
    return $resource(FdConfig.routes.companyRoles);
})

我有一個使用此工廠的函數:

ctrl.saveCompanyRole = function(companyRole) {
    return CompanyRolesResource.save({}, companyRole).$promise.then(function (response) {
            console.log(response)
        });
    };

在Chrome DevTools中,我看到響應是{status: 200, data: {...}} 但是在console.log我只看到:

Resource
$promise: Promise
$$state: Object
__proto__: Object
$resolved: true

我的data在哪里? 我在$promise$$state內也找不到它。

UPD:

使用這種方式時,我會得到正確的響應:

   $http({
        url: FdConfig.routes.companyRoles,
        method: "POST",
        data: companyRole
    }).then(function (response) {
        console.log(response.data);
    });

但是我的console.log(response)在工廠返回undefined

您無法直接從$resource訪問數據,因為它是從服務器異步檢索的。 這意味着您嘗試訪問數據時尚未加載數據。 您需要做的是為$resource操作提供回調。

Angular 1.2開始, $resource為每個動作提供$promise ,您可以在加載數據時用來檢索數據:

CompanyRolesResource.save({}, companyRole).$promise.then(function (response) {
    // do whatever you want with your response.data here
});

Resource是您的數據對象。 當您使用$ resource時,您不會獲得響應(狀態,數據,標頭,配置)對象。 您將直接獲得響應(您的預期響應數據)

重要的是要意識到調用$resource對象方法會立即返回一個空引用(對象或數組取決於isArray )。 從服務器返回數據后,將使用實際數據填充現有引用。

在后台,ngResource API使用angular.copy將服務器數據復制到空引用。 如果數據不是JavaScript對象,則不會復制任何內容。

對於.save動作方法,如果返回數組,將拋出$resource:badcfg錯誤。

錯誤:$ resource:badcfg

響應與配置的參數不匹配

描述

$ resource服務期望一個可以反序列化為數組但接收到對象的響應時,就會發生此錯誤,反之亦然。 默認情況下,所有資源操作均期望對象,但期望數組的query除外。

要解決此錯誤,請確保$resource配置與從服務器返回的數據的實際格式匹配。

有關更多信息,請參見$ resource API參考文檔。

— AngularJS $ resource:badcfg錯誤參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM