我想知道哪种是最佳实践,或者在哪种情况下,一种比另一种方式更喜欢一种。
如果我们使用父(主)控制器:
,则设置如下。<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
这是长