AngularJS:Controller应为每个项目保留大量项目或控制器

时间:2016-11-15 09:06:15

标签: javascript html angularjs

我正在使用棱角分明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>

我无法复制我的代码,因为它在私人网络中。 这个例子解释了我的意思。 *此外整个页面都有一个控制器,这意味着孔表位于控制器内部。

2 个答案:

答案 0 :(得分:2)

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

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

然后,您只能为一个JSON文件使用一个控制器,然后将其打印在HTML文件中。希望这有帮助!

答案 1 :(得分:1)

是否使用嵌套控制器是判断调用,但是WebDriverManager 范围应该引用模型而不是模型 - 所以不要建模/放置数据进入范围。您的模型/数据通常应该在服务中。

在开发Angular应用程序时,首先要考虑一下模型。使用API​​将它们放入服务或工厂中以获取/编辑/操作模型。然后下一步是设计您的视图。每个视图都应该投影/使用/操作模型的某个子集。 为每个视图创建一个控制器,只需将所需的模型子集粘贴到视图中。使控制器尽可能薄。

因此,在我看来,使用嵌套控制器更好,因为您应该知道如何this tutorial states。如果使用嵌套控制器,则代码会变得更复杂。