AngularJS:控制器应该保存项目的大数组或每个项目的控制器

AngularJS: Controller should hold big array of items or controller for each item

本文关键字:控制器 项目 数组 保存 AngularJS      更新时间:2023-09-26

我使用的是angular v1.3.15。我的控制器从对象数组中显示一个大表:

$scope.table = [
  { name: "A",
    availableConnection: [
      { id: 1, displayName: "Foo" },
      { id: 2, displayName: "Bar" },
      ...
    ]},
  { name: "B",
        availableConnection: [
          { id: 1, displayName: "Doo" },
          { id: 2, displayName: "Boo" },
          ...
        ]},
  ...
];

我想知道我的控制器是否会为数组$scope.table中的每个单元格保持控制器。

<tr ng-repeat="x in table" ng-controller="RowController">
      <td>
          <select ng-options="a.displayName for a in availableConnection" >                          
          </select>
      </td>
</tr>

我不能复制我的代码,因为它在私有网络内。这个例子解释了我的意思。*整个页面也有一个控制器,所以这意味着孔表是在控制器内。

AngularJS中的控制器通常不会用于任何"繁重的工作",包括大数据集。如果您有一个大的数据集,您应该将您的值存储在JSON文件中。您可以使用$http服务来检索数据:

 $http.get("my_data.json")
    .then(function(response) {
        $scope.table = response.data;
    });

你可以只使用一个控制器的许多JSON文件,然后打印它在你的HTML文件。希望这对你有帮助!

是否使用嵌套控制器是一个判断调用,但本教程指出作用域应该指向模型,而不是模型——所以不要将数据建模/放入作用域。你的模型/数据通常应该在服务中。

在开发Angular应用程序时,首先要考虑你的模型。将它们放在带有api的服务或工厂中,以获取/编辑/操作模型。下一步是设计视图。每个视图都应该投射/使用/操作模型的某个子集。为每个视图创建一个控制器,简单地将模型的所需子集粘合到视图。让你的控制器越薄越好。

因此,在我看来,使用嵌套控制器最好是而不是,因为您应该知道如何正确使用嵌套控制器。如果使用嵌套控制器,代码会变得更加复杂。