Я хочу сделать функцию, которая извлекает некоторую информацию из URL-адреса ajax. Например, в моей службы, я бы следующий метод:В AngularJS, как автоматически обновлять значение, полученное с помощью ajax?
this.getFavColor = function(id)
{
return $http.get('/colors/get/' + id);
}
И в мой контроллер, я бы сделать следующее:
$scope.favColor = UserService.getFavColor(id);
Проблема, однако есть $scope.favColor
будет назначен обещание в этом case, и единственный способ фактически изменить его на значение, возвращаемое 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
, но я не могу настроить REST api для моего ajax, поэтому, пожалуйста, не предлагайте его.
Это должно сработать. Ты это пробовал? Мое единственное сомнение заключается в том, что возвращающее утверждение возвращает не обещание напрямую, а вызов метода успеха. если успех также возвращает обещание, это прекрасно. Иначе вам не нужно ничего возвращать или сначала взять обещание в переменную, а затем называть успех на нем и вернуть обещание. – Chandermani
@Chandermani Я не пробовал, но я бы предпочел использовать тот способ, который используется '$ resource' для этого. Вы посмотрели код 'angular.resource.js' и можете ли вы понять, как он это делает? –
Вам не нужен API REST для получения данных с помощью '$ resource'. Пока данные json GET будут работать без проблем. Для получения данных требуется только URL-адрес. – Chandermani