0

Я использую $ rootScope для получения и обновления аватара. Теперь, когда пользователь обновляет новый аватар, необходимо обновить ng-src, показывая новый аватар, который только что был загружен.

Я понял это, наблюдая за моим $ rootScope.myAvatar, а затем устанавливая $ scope.myAvatar для newValue. К сожалению, ng-src в этом случае не обновляется. Я прочитал много вопросов, касающихся проблем с ng-src и нулевыми значениями, но это всего лишь изменение в области $ scope, и я не понимаю, почему обновление $ scope.myAvatar не вызывает изменения ng-src. Я попытался вручную вызвать $ scope. $ Apply(), он не работает, поскольку $ rootScope все еще переваривается.

router.js:

... 
.when('/account', { 
      'templateUrl': 'components/account/account.tpl.html', 
      'controller': 'accountCtrl as ctrl', 
      'auth': true, 
      'reloadOnSearch': false 
     }) 
... 

контроллера, как Ctrl:

function accountCtrl($scope, $rootScope, accountService) { 
var vm = this; 

accountService.getAvatar().then(function(res) { 
    vm.myAvatar = res; 
}); 

$rootScope.$watch('myAvatar', function (newValue, oldValue) { 
    if (newValue) { 
     vm.myAvatar = $rootScope.myAvatar; 
    } 
}); 

} 

И HTML:

<img ng-src="{{ctrl.myAvatar}}" alt="avatar" width="100" height="100"/> 
+2

'ctrl.myAvatar' не' $ rootScope.myAvatar', равно как и '$ scope.myAvatar'. – JLRishe

+0

извините, посмотрите отредактированный код. Это переменная vm, которую я использую для области. – DEls

+0

Ваше значение - свойство объекта - используйте object.property. –

ответ

0

Я думаю, что ваша конфигурация маршрутизатора неправильно. Попробуйте следующее:

... 
.when('/account', { 
    'templateUrl': 'components/account/account.tpl.html', 
    'controller': 'accountCtrl', 
    'controllerAs': 'ctrl' 
    'auth': true, 
    'reloadOnSearch': false 
}) 
... 
+0

no it wasn 't, его конфигурация верна –

+0

да, это правильно. Прекрасно работает для всего остального. Этот контроллер и конфигурация маршрутизатора работают для десятков строк кода. – DEls

Смежные вопросы