Часы не вызывают при обновлении переменной службы
-
20-12-2019 - |
Вопрос
Я пытаюсь изменить переменную в сервисе, но часы в контроллере не вызывают, когда это произойдет:
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
.
Вот a polekt для этого.В чем причина?
Решение
Нет ничего плохого в $ watch.Выражение Watch $ оценивается по отношению к объему, которое его вызывается и принимает строковое выражение или функцию в качестве первого аргумента.Чтобы получить его на работу, либо публикуйте Account
внутри вашего контроллера, чтобы схватить и $ смотреть на него через строку:
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
.
или в качестве альтернативы изменения экспрессии часов к функции, которая возвращает свой свойство account.user.status.Я не знаком с кофем сценария, поэтому я оставлю пример до вас.
Не связан с StackOverflow