Pergunta

Eu estou tentando variável de mudança no serviço, mas cuidado com controlador não disparar quando isso acontece:

app.factory 'User',  ->
  class User
    status: 'offline'
    set_status: (status) ->
      @status = status

app.service 'Account', ->
  dsa: null
  test: 'asd'
  user: null

app.controller 'MainCtrl', ($scope, $timeout, Account, User) ->
  Account.user = new User
  $scope.$watch Account.user.status, (status) ->
    console.log "status changed to #{status}"

  $timeout ->
    Account.user.set_status 'busy'
    console.log Account.user.status
  , 2000

Aqui é um plunk para este.Qual é a razão?

Foi útil?

Solução

Não há nada de errado com $assistir.O $assistir a expressão é avaliada de acordo com o escopo é chamado e faz uma expressão de seqüência de caracteres ou uma função como seu primeiro argumento.Para fazê-lo funcionar publicar Account dentro de seu controlador para o escopo e $assistir nela através de seqüência de caracteres:

Demo plunker

app.controller 'MainCtrl', ($scope, $timeout, Account, User) ->
  $scope.name = 'World'
  console.log Account
  Account.user = new User
  $scope.Account = Account
  $scope.$watch 'Account.user.status', (status) ->
    console.log "status changed to #{status}"

  $timeout ->
    Account.user.set_status 'busy'
    console.log Account.user.status
  , 2000

Ou, em alternativa, altere a expressão de inspeção para uma função que retorna a sua Conta.usuário.status de propriedade.Eu não estou familiarizado com café script, então eu vou deixar o exemplo para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top