Javascript 在AngularJS中,如何从父作用域访问多个子作用域

Javascript 在AngularJS中,如何从父作用域访问多个子作用域,javascript,angularjs,Javascript,Angularjs,我有一个父级区域生成器控制器,它有多个美国州,每个州可以有几个邮政编码 以下是该格式的基本内容: 建造商控制员 app.controller("builderController", function($scope, $http, $rootScope, $timeout) { $scope.zones = []; }); app.controller("zipController", function($scope, $http, $rootScope, $timeout) { $

我有一个父级
区域生成器
控制器,它有多个
美国州
,每个州可以有几个邮政编码

以下是该格式的基本内容:

建造商控制员

app.controller("builderController", function($scope, $http, $rootScope, $timeout) {
  $scope.zones = [];
});
app.controller("zipController", function($scope, $http, $rootScope, $timeout) {

  $scope.zipCodes = [];

  $scope.addZipCode = function() {
    $scope.zipCodes.push({code: '', distance: '25mi'});
  }
  $scope.removeZipCode = function(index) {
    console.log(index, 'index removing');
    $scope.zipCodes.splice(index, 1);
  }

});
ZIP控制器

app.controller("builderController", function($scope, $http, $rootScope, $timeout) {
  $scope.zones = [];
});
app.controller("zipController", function($scope, $http, $rootScope, $timeout) {

  $scope.zipCodes = [];

  $scope.addZipCode = function() {
    $scope.zipCodes.push({code: '', distance: '25mi'});
  }
  $scope.removeZipCode = function(index) {
    console.log(index, 'index removing');
    $scope.zipCodes.splice(index, 1);
  }

});
在一个
builderController
中可以有
多个zipccontroller
在builderController内部,我想找到一个对象或方法来迭代所有Zip控制器,以便每次更新一个子控制器时,我可以计算总距离和使用的Zip代码数

在这种情况下,最有效的方法是什么

基本目标


因此,在一个
builderController
中可能有4-5个
zipcoder
元素,我想在
builderController
中有一个变量,称为
totalZipCodes
,它计算每个
zipCodes
数组中每个控制器的邮政编码总数,我将如何通过服务或工厂做到这一点?或者有其他方法吗?

将数据存储在工厂中,让控制器调用工厂进行计算。

一般方法 正如@PrinayPanday在他的评论中所建议的,您应该使用组件/指令之类的东西来实现这一点。我在前面说,我将交替使用术语指令和组件,因为我不确定您的约束条件。为此,我将采取以下措施:

  • 创建定义指令控制器的父指令
  • 创建需要父指令控制器的子指令
  • 当子指令初始化时,它将向父控制器注册自身
  • 使用父控制器的子指令控制器列表执行所需操作
您还可以使用子范围来声明某个事件的回调(例如
$onInit
),而不是定义指令控制器。我已经回答了几个这样的问题。因此,您可能会发现这些答案有助于进一步了解上述解决方案:

针对您的需要
在我重新阅读您的问题时,我不得不问,是否有更好的方法来解决这个问题,在服务/模型中共享数据,而不是需要自定义指令

我肯定会考虑使用组件。您可以将绑定传递到可以在builder controllerI中跟踪的组件。我并不真正了解服务,或者服务的用途或功能是什么。您可以将服务注入到其他角度实体中。您可以为您的子组件创建具有添加/删除API的服务。您还可以创建一个getList API,以便父控制器也可以访问它。考虑到您是angular的新手,我会在我的回答中采用这种方法,而不是指令/组件路线。是否有简单的示例,这真的没有意义。我想计算所有控制员的有效邮政编码总数。你能提供一些例子吗?我发现了一个粗略的例子:。工厂存储所有数据,并具有访问这些数据的服务/功能。控制器调用工厂函数来添加/获取数据。