延期された約束がディレクティブで解決されるのを待つコントローラーを作成しようとしています。しかし、私が得たのはサイレントエラーだけで、コントローラーとディレクティブの両方が実行または何もできませんでした。
app.coffee
angular.module('myApp', [
'ngRoute'
'myApp.filters'
'myApp.services'
'myApp.directives'
'myApp.controllers'
]).config [ '$routeProvider', ($routeProvider) ->
$routeProvider.when '/',
template: '<div></div>'
controller: 'MyCtrl1'
resolve:
CM: ['CM', (CM) ->
CM
]
return
])
コントローラー.コーヒー
angular.module('myApp.controllers', [])
.controller('MyCtrl1', ['$scope', 'CM', ($scope, CM) ->
# do stuff with a resolved CM
])
ディレクティブ.コーヒー
angular.module('myApp.directives', [])
.directive('myDirv', ['CMd', (CMd) ->
(scope, elm, attrs) ->
CMd.CMObject.applyToDiv elm
CMd.deferred.resolve CMd.CMObject
scope.apply() # I've tried it with and without scope.apply()
return
])
サービス.コーヒー
angular.module('myApp.services', [])
.service('CMd', ['$q', ($q) ->
@CMObject = CMObject
@deferred = $q.defer()
return
])
.factory('CM', ['CMd', (CMd) ->
CMd.deferred.promise
])
これにより、コントローラーとディレクティブの両方がサイレントに失敗するのはなぜですか? コントローラーが解決を正しく待機するようにするにはどうすればよいですか?