Данные не обновляются в представлении после выполнения обещания
Я использую свое Rails-приложение в качестве API-интерфейса. Итак, у меня есть приложение на одной странице, которое будет делать несколько вызовов API и начнет отображаться, когда возвращаются все данные. Я не хочу ждать всех результатов от вызова API, а затем загружать данные, поэтому я начал изучать отложенное и обещание.
У меня есть угловая служба под названиемапи где у меня будет $ http звонки на все мои API. Я жестко закодировал данные, которые возвращаются из каждого вызова 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
]
Я создал пограничный сервис для вызова методов из моего API-сервиса. Я использовал $ timeout для симуляции асинхронных вызовов API.
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
В моем EdgeController я вызываю службу и прикрепляю значение к $ scope.data
debugger.controller "EdgeController", ($scope, EdgeService) ->
$scope.load = ->
$scope.data = EdgeService.tickets()
debugger.$inject = ["$scope"]
Это мой тонкий шаблон
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}}
Вывод не привязывается
Также это лучший способ реализовать, если мне нужно сделать несколько вызовов API и обновить представление при каждом возвращении?