如何动态地在一个视图中显示其他控制器的值

时间:2016-02-10 12:35:43

标签: angularjs

我正在处理一个应用程序是索引页面,我正在显示多个视图,在索引导航栏中我必须显示来自2个不同控制器的通知计数和用户名,

我能够成功显示通知计数和用户名,但问题是值没有动态变化。 我们需要刷新页面以获取新值。

在这种情况下我能做些什么可以指导我。

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式实现:

  1. rootScope 中维护这些值,以便您 将具有双向约束力。

  2. 使用 emit 通知父控制器有关值的更改。只有当这两个控制器存在于子元素中时,这才有效。

  3.   

    在子控制器中触发值更新的事件:

    $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>