Dane nie są aktualizowane w widoku po rozwiązaniu obietnicy

Używam mojej aplikacji Rails jako zaplecza API. Mam więc pojedynczą aplikację kątową, która wykona wiele wywołań interfejsu API i zacznie wyświetlać się po każdym zwróceniu danych. Nie chcę czekać na wszystkie wyniki wywołania interfejsu API, a następnie ładować dane, więc zacząłem uczyć się odroczonego i obiecującego.

Mam usługę kanciastąapi gdzie będę mieć wywołania $ http do wszystkich moich api. Dla celów testowych na stałe zapisałem dane, które powracają z każdego z wywołań api.

debugger.factory "api", ["$resource", "$q", ($resource, $q) ->
  apiCall1 = [
    key1: "v1"
    key2: "v2"
    key3: "v3"
  ]

  apiCall2 =
  .
  .
  .
  apiCall7 =

  factory = getIsDynamicApp: ->
    deferred = $q.defer()
    deferred.resolve apiCall1
    deferred.promise

  factory
]

Stworzyłem usługę krawędziową, aby wywoływać metody z mojej usługi API. Użyłem $ timeout do symulacji wywołań api asynchronicznych.

debugger.factory "EdgeService", ($resource, api, $q, $timeout, $http) ->

  fetchIsDynamic = ->
    api.getIsDynamicApp()   

  tickets: ->
    deferred = $q.defer()
    fetchIsDynamic().then (data) ->
      $timeout (->
        deferred.resolve data
        console.log data #<- this works, I can see the data
      ), 3000  
    deferred.promise

W moim EdgeControllerze wywołuję usługę i dołączam wartość do $ scope.data

debugger.controller "EdgeController", ($scope, EdgeService) ->
  $scope.load = ->
    $scope.data = EdgeService.tickets()

debugger.$inject = ["$scope"]

To jest mój szczupły szablon

doctype html
html(ng-app="debugger" class="ng-scope")
  head
    title Ads Debugger
    = stylesheet_link_tag    "application/debugger"
    = javascript_include_tag "debugger"

  body
    #content(ng-controller="EdgeController")
      .search_form
        form class="serch_form"
          input type="text" name="search_box" id="search_box"
          input type="submit" value="Search" ng-click="load()"

      div
        pre message {{data}}

Wyjście nie jest powiązane ”

Czy jest to najlepszy sposób na wdrożenie, jeśli muszę wykonać wiele wywołań api i zaktualizować widok, gdy każdy się zwróci?

questionAnswers(1)

yourAnswerToTheQuestion