これが私のシナリオです。フォームにエラー メッセージが表示された場合、キャプチャを更新したいと考えています。そして、キャプチャを使用するマルチビューがあります。
だから私は工場を書きます:
Services.factory 'Captcha', ['$rootScope', ($rootScope) ->
service = {}
service.new_captcha = () ->
console.log 'render cap'
$rootScope.captcha_src = "/captcha?action=captcha&i=#{+new Date}"
service
]
そして、$http プロセスを処理する別のファクトリが以下のコードをトリガーします
$http
.error (data) ->
service.signin_err_msg = data.error
Captcha.new_captcha()
$rootScope.$broadcast('new_captcha')
ビュー コントローラーでは、$scope 値がブロードキャストをリッスンし、src 値を変更します。
SignUpCtrl = App.controller 'SignUpCtrl', ($scope, UserService, $location, $rootScope) ->
$scope.UserService = UserService
$scope.$on 'new_captcha', (val) ->
$scope.captcha_src = $rootScope.captcha_src
$scope.captcha_src = $rootScope.captcha_src
これは機能します。しかし、私はこれが良い方法だとは思いません。rootScope ブロードキャストをリッスンするには、同じコードを作成する必要があります。同じ方法が良いですか?