我正在使用 $rootScope 来获取和更新头像。现在,当用户更新一个新的头像时,其ng-src也应该更新,显示刚刚上传的新头像。
我通过观察控制器中的$rootScope.myAvatar然后将 $scope.myAvatar 设置为 newValue 来实现这一点。不幸的是,在这种情况下 ng-src 没有更新。我已经阅读了很多关于 ng-src 和 null 值问题的问题,但这只是 $scope 的变化,我不明白为什么更新 $scope.myAvatar 不会导致 ng-src 的变化。我尝试手动调用 $scope.$apply(),它不起作用,因为 $rootScope 仍在消化。
路由器.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"/>