控制器AngularJ,服务或父控制器之间的通信



我想知道哪种是最佳实践,或者在哪种情况下,一种比另一种方式更喜欢一种。

如果我们使用父(主)控制器:

,则设置如下。
<div ng-controller="Controller Main">
  <div ng-controller="Controller 1"></div>
  <div ng-controller="Controller 2"></div>
</div>

因此,我们可以在这里进行交流,因为控制器1和2都可以访问控制器Main的范围。

另一种方式是,如果我们使用服务,

<div ng-controller="Controller 1"></div>
<div ng-controller="Controller 2"></div>

所以我认为我们正在做的是我们将服务注入控制器。

我已经看过两个解决方案,但我不知道哪一种是首选。

首选使用服务。通过使用父控制器断开封装来进行交流,如果您得到一个不了解原始限制和范围继承的局限性的人,它可能会很笨拙。Angular的依赖性注入确实非常有效,并且您的代码在该方面会更加灵活。如果您这样做的话,请长期长期。

服务的另一个优点是代码可读性。如果Controller 1引用了Controller Main中的某些内容,则阅读代码的人可能不知道其来自何处。在您看到它注入的服务的情况下,您立即知道在哪里寻找它。

您可以使用:

'use strict';
                (function(window, angular, undefined) {
                    'use strict';
                    angular.module('ctrl.parent', [])
                        .controller('ParentController',function (scope) {
                            scope.vocalization = '';
                            scope.vocalize = function () {
                                console.log(scope.vocalization);
                            };
                    });
                })(window, angular);
                angular.module('app',['ctrl.parent'])
                    .controller('ChildCtrl', function($scope,$controller){
                    angular.extend($scope, new $controller('ParentController', {scope:$scope}));
$scope.vocalization = 'CIP CIP';
                });

看一个angularjs-share-config-tirectives-bet-bettontrollers throllers

这是长

相关内容

  • 没有找到相关文章

最新更新