我想做一個函數,從ajax URL獲取一些信息。例如,在我的服務,我想有以下方法:在AngularJS中,如何自動更新通過ajax獲取的值?
this.getFavColor = function(id)
{
return $http.get('/colors/get/' + id);
}
而在我的控制,我會做到以下幾點:
$scope.favColor = UserService.getFavColor(id);
問題不過是,$scope.favColor
將在本指派一個承諾情況下,實際將其更改爲由ajax返回的值的唯一方法是在承諾上設置一個.success()
回調並使用它來更新該值。
但是,如果我有許多必須通過ajax獲取的東西,這很快就變得很麻煩。有沒有捷徑可以做到這一點?
this.getFavColor = function(id, variableToChange)
{
return $http.get('/colors/get/' + id).success(function(jsonResult)
{
variableToChange = jsonResult.favColor;
});
}
,然後做在控制器中的以下內容:
UserService.getFavColor(id, $scope.favColor);
請問這個方法真的有效麼?
注意:我已經考慮過$resource
但我無法爲我的ajax設置REST API,因此請不要建議它。
這應該有效。你試過了嗎?我唯一的疑問是因爲return語句不直接返回promise,而是調用success方法。如果成功也回報承諾就沒問題。否則,你不需要返回任何東西,或者先將承諾帶入變量,然後調用成功,並返回承諾。 – Chandermani
@Chandermani我還沒有嘗試過,但我更願意使用'$ resource'用來做這件事的任何方法。你有沒有看過'angular.resource.js'的代碼,你能弄清楚它是如何做到這一點的? –
你不需要一個REST API來使用'$ resource'獲取數據。只要數據是json GET就可以毫無問題地工作。它只需要一個url來獲取數據。 – Chandermani