簡體   English   中英

在AngularJS中如何從父范圍訪問多個子范圍

[英]In AngularJS how to access multiple child scopes from parent scope

我有一個父zone builder控制器,該控制器具有多個US States ,每個州內可以有多個郵政編碼。

以下是該格式的基本知識:

建築控制器

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可以有multiple zipControllers ,我想提出一個對象或方法來遍歷所有Zip控制器,以便每次使用以下一種方法時,我都能計算出總距離和所用郵政編碼的數量。子控制器已更新。

在Angular中最有效的方法是什么?

基本目標

所以有可能是4-5 zipController在一個元素builderController我想有一個變量在builderController稱為像totalZipCodes其計算在每個郵政編碼總數zipCodes陣列的每個控制器,我會怎么做,與服務或廠? 還是有另一種方法?

將數據存儲在工廠中,然后讓控制器致電工廠進行計算。

一般方法

正如@PrinayPanday在他的評論中建議的那樣,您應該使用類似組件/指令的方法來執行此操作。 首先,我不確定是否會受到約束,因此我將交替使用術語“指令”和“組件”。 我可以通過執行以下操作來實現:

  • 創建定義指令控制器的父指令
  • 創建需要父指令控制器的子指令
  • 當child指令初始化時,它將向父控制器注冊
  • 使用父控制器的子指令控制器列表執行所需的操作。

您還可以使用子級的作用域在某些事件(例如$onInit )上聲明回調,而不用定義指令控制器。 我已經回答了幾個這樣的問題。 因此,您可能會發現以下答案有助於進一步了解上述解決方案:

特定於您的需求

當我重新閱讀您的問題時,我不得不問是否有更好的方法可以通過在服務/模型中共享數據而不是自定義指令來解決此問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM