私は簡単なことをしようとしています - ディレクティブのモデルをサービスのデータにバインドします。そして、サービスのデータが ($timeout または $http リクエストによって) 非同期にロードされる前に、ディレクティブのモデルを更新しません。
実際の例http://codepen.io/snater/pen/IjvFa
そしてソース:
<div ng-app="asyncServiceTest" ng-controller="testController">
<bind-to-service></bind-to-service>
</div>
app = angular.module "asyncServiceTest", []
app.directive "bindToService", ["dataService", (dataService) ->
restrict: "E"
scope: {}
template: "<div>{{ test }}</div>"
link: (scope) ->
scope.test = dataService.test
]
app.factory "asyncService", ["dataService", "$timeout", (dataService, $timeout) ->
load: ->
dataService.test = "SYNC DATA!" # Works fine
$timeout ->
dataService.test = "ASYNC DATA!" # Doesn't work ((
, 2000
]
app.factory "dataService", ->
test: "Init Data"
app.controller "testController", ["$scope", "asyncService", ($scope, asyncService) ->
asyncService.load()
]
asyncService の $rootScope で $apply を呼び出しても機能しません。期待どおりですが、試してみました。