-1

我正在使用 $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"/>
4

1 回答 1

-1

我认为您的路由器配置错误。尝试以下一种:

...
.when('/account', {
    'templateUrl': 'components/account/account.tpl.html',
    'controller': 'accountCtrl',
    'controllerAs': 'ctrl'
    'auth': true,
    'reloadOnSearch': false
})
...
于 2016-05-10T08:46:39.113 回答