我有两个独立的控制器(无关系),两者之间共享一个服务。 在controllerA中,我对重复的元素有ng-click属性,它正在向共享服务中的函数发送True / False值。
当此函数接收到一个调用时,我希望根据该位增加或减少ControllerB中的整数。
ControllerB的Integer应该不依赖于ControllerA,它从自己的API接收一个Count,当前这个值被设置为ng-model属性。
控制器已经共享该服务。 我不确定如何“注入”控制器B,并改变ng-model的值。
架构也不正确吗?因为在某些时候控制器的互动应该强迫父子关系吗?这只是需要发生的少数几种情况。
答案 0 :(得分:1)
以下是我在https://stackoverflow.com/a/32209223/440898
中回答的一个例子
var app = angular.module("MyApp", []);
angular.module("MyApp")
.service('authenticationSrv', function () {
var user = {name: 'anonymous'};
return {
getUser: function () {
return user;
},
setUserName: function (value) {
user.name = value;
}
};
});
angular.module("MyApp")
.controller("parentCtrl", function ($scope, authenticationSrv) {
$scope.user = authenticationSrv.getUser();
});
angular.module("MyApp")
.controller("childCtrl", function ($scope, authenticationSrv) {
authenticationSrv.setUserName('my name');
$scope.user = authenticationSrv.getUser();
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="MyApp">
<div ng-controller="parentCtrl">
<p>{{user.name}}</p>
<div ng-controller="childCtrl">
<p>{{user.name}}</p>
</div>
</div>
</body>