AngularJS ng src不会在$rootScope上使用$watch进行更新
AngularJS ng-src does not update using $watch on $rootScope
我正在使用$rootScope来获取和更新化身。现在,当用户更新新的化身时,的ng-src也应该更新,显示刚刚上传的新化身。
我通过观看控制器中的$rootScope.myAvator并将$scope.myAvatar设置为newValue来实现这一点。不幸的是,在这种情况下,ng-src没有更新。我读过很多关于ng-src和null值问题的问题,但这只是$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"/>
我认为您的路由器配置错误。尝试以下方法:
...
.when('/account', {
'templateUrl': 'components/account/account.tpl.html',
'controller': 'accountCtrl',
'controllerAs': 'ctrl'
'auth': true,
'reloadOnSearch': false
})
...
相关文章:
- 在控制器上使用“$watch”时,为什么不更新此隐藏字段
- AngularJS ng src不会在$rootScope上使用$watch进行更新
- 使用$watch更新数据,ng重复不反映更改
- 当数据在另一个URL上更新时,AngularJS是否可以在一个URL上触发$watch
- Angular$watch未更新绑定
- 事件发射器与在 AngularJs 中更新大型数据集时的$watch
- AngularJS:$scope.$watch 不会更新从自定义指令$resource获取的值
- 为什么模型更改时$watch不更新
- AngularJS暂停$watch以进行内部更新
- $watch无法识别更新的属性
- 在 $scope.$watch 中更新时,独立作用域绑定不起作用
- 只更新已使用Webpack.watch()更改的区块
- 在指令中使用$watch的单个值对范围进行角度更新
- angularJS$watch在使用控制器更新数据时不在指令中工作
- $watch未在函数外更新数组
- Angular $watch数组并从服务器更新
- Gulp.watch()不能用于FTP更新
- $watch()没有更新$scope
- 美元的范围.当从指令中添加值时,数组上的$watch不会更新
- $watch仅在window.innerWidth的第一次更新时触发