我正在处理一个应用程序是索引页面,我正在显示多个视图,在索引导航栏中我必须显示来自2个不同控制器的通知计数和用户名,
我能够成功显示通知计数和用户名,但问题是值没有动态变化。 我们需要刷新页面以获取新值。
在这种情况下我能做些什么可以指导我。
答案 0 :(得分:0)
您可以通过以下方式实现:
在 rootScope 中维护这些值,以便您 将具有双向约束力。
使用 emit 通知父控制器有关值的更改。只有当这两个控制器存在于子元素中时,这才有效。
在子控制器中触发值更新的事件:
$scope.$emit('valueChanged', {value: val});
在父控制器接收事件值中:
$scope.$on('valueChanged', function(event, args) {
console.log(args.value);
});
答案 1 :(得分:0)
我猜你是在直接观察这个值而不是某个对象包装器。在这种情况下,javascript实际上并不是更新变量,而是分配一个完整的新变量。更新变量的函数范围之外的任何内容都将永远不会收到新值。
解决方案很简单;将值包装在对象中并共享/注入该对象。
angular.module('myApp')
.value('myPageState', {
notificationCount: 0
});
angular.module('myApp')
.controller('myController', function($scope, myPageState) {
$scope.myPageState = myPageState;
});
<div class="my-notification-thingy"> {{ myPageState.notificationCount }} </div>