通过控制器向控制器AngularJS注入逻辑

时间:2015-08-26 15:21:53

标签: angularjs

我有两个独立的控制器(无关系),两者之间共享一个服务。 在controllerA中,我对重复的元素有ng-click属性,它正在向共享服务中的函数发送True / False值。

当此函数接收到一个调用时,我希望根据该位增加或减少ControllerB中的整数。

ControllerB的Integer应该不依赖于ControllerA,它从自己的API接收一个Count,当前这个值被设置为ng-model属性。

控制器已经共享该服务。 我不确定如何“注入”控制器B,并改变ng-model的值。

架构也不正确吗?因为在某些时候控制器的互动应该强迫父子关系吗?这只是需要发生的少数几种情况。

1 个答案:

答案 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>