我在网站上有两个单独的角度模块,我想在模块之间进行事件处理。我不能在它们之间有一个共同的父模块或控制器,因为它们中的一个是标题模板,它们是一个常见的主体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 ..
如何实现这一目标?
由于
答案 0 :(得分:0)
您可以做的是绑定 $ scope 中的函数而不是值。
$scope.currentFeed = currentFeed.post;
变为
$scope.getCurrentFeed = function() { return currentFeed.post; }
您可以在模板中将其用作函数( getCurrentFeed())