0

これが私のシナリオです。フォームにエラー メッセージが表示された場合、キャプチャを更新したいと考えています。そして、キャプチャを使用するマルチビューがあります。

だから私は工場を書きます:

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 ブロードキャストをリッスンするには、同じコードを作成する必要があります。同じ方法が良いですか?

4

2 に答える 2