2017-07-18 194 views
0

我在從angular角度向Java後端發出請求時遇到了一些問題。

我當前的代碼是這樣的:

$scope.listdevices=function(){ 
     var devices = $resource('http://localhost:8080/userapi/devices/:userId',{userId:'@userId'}); 
     var list=devices.query({userId:$scope.userId}); 
     console.log(JSON.stringify(list)); 
     console.log(list); 
     console.log(list.length+"TAMANHO") 
}; 

數據被取指令,它看起來像這樣:

enter image description here

但對象沒有被保存在我的名單時,我請致電listdevices以返回要迭代的對象列表。

非常感謝

+0

的問題並不十分清楚,但它看起來像你需要移動一些代碼到查詢的成功回調函數(現在你要同步進行異步代碼。) –

回答

0

.query將是異步,所以你需要一個回調或承諾。無論如何,如果你想獲得單一記錄,你可以使用「get」。這裏有一個例子:

myApp.factory('Device', function($resource) { 
    return $resource('http://localhost:8080/userapi/devices/:userId', { 
    userId: '@userId' 
    }); 
}); 

myApp.controller('YourCtrl', function(Device) { 

    Device.get({ 
    userId: 1 
    }).$promise.then(function(res){ 
    console.log(res) 
    }) 
}) 

.query是查詢您的端點,例如,如果你想搜索與條件的設備。資源假定'http://localhost:8080/userapi/devices'將返回一個數組,而/:userId將返回一個對象。

擴展答案按你的評論,如果你想查詢某用戶的設備列表(返回數組),你的確會使用.query

Device.query({ 
    userId: 1 
}).$promise.then(function(results) { 

    console.log(results) 

}) 

或者,如果您使用你有權訪問標題的回調。

Device.query({ 
    userId: 1 
}, function(results, headers) { 

}) 
+0

嗯感謝您的幫助!但我仍然有一些懷疑..問題是,我想從用戶的設備數組..這就是爲什麼url有userId作爲參數..是否有可能?謝謝:) – PJMC

+0

檢查編輯的答案 – yBrodsky

+1

我會小心在JavaScript中建議使用箭頭函數。它完全不受IE的支持。 –