如何在两个模块之间传递事件数据

时间:2015-11-22 15:57:26

标签: javascript angularjs

我在网站上有两个单独的角度模块,我想在模块之间进行事件处理。我不能在它们之间有一个共同的父模块或控制器,因为它们中的一个是标题模板,它们是一个常见的主体html文件,其中根据页面包含部分(标题是常量的)。简而言之,我在这方面有技术限制。 这是关于我的情况的简短简介: 我有一个定义的服务,其值为

var sharedServices = angular.module('sharedServices',[]);
sharedServices.value('currentFeed',{
'post': {}
 })

在标题中的这个模块中,我想根据我的操作更改值,在这种情况下,我更改了点击li的值:

<li ng-click="changeFeed()"></li>

var navApp = angular.module('navApp',['sharedServices']);
navApp.controller('navController',['$scope','$http','$rootScope','currentFeed',function($scope,$http,$rootScope,currentFeed) {
    currentFeed.post = 'initial value';
    $scope.changeFeed = function() {
            currentFeed.post= 'changed value';
    });
}])

这是模块,我想在其中显示更改的值:

   var feedApp = angular.module('feedApp',['sharedServices']);
   feedApp.controller('FeedController',['$scope','currentFeed',function($scope,currentFeed) {
   $scope.currentFeed = currentFeed.post;
   }]);

但是我想这个值没有按预期更新:

       {{ currentFeed }} // this always remains 'initial value'

我不能使用$ emit,$ on,因为我没有共同的rootcope ..

如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

您可以做的是绑定 $ scope 中的函数而不是值。

$scope.currentFeed = currentFeed.post;

变为

$scope.getCurrentFeed = function() { return currentFeed.post; }

您可以在模板中将其用作函数( getCurrentFeed()