AngularJS:ngRepeat中每行的控制器

时间:2014-04-05 19:38:35

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我有一个100行的表。每行代表一个复杂对象,它是一个类型的实例。现在,需要根据用户交互在行级别上执行操作。 每个对象中可能的操作对于每一行是不同的,并且与其他对象的状态无关。 现在,我目前的模式是这样的。整个桌子的一个控制器。

$scope.list = [] // List of instances. Instances which I get by doing new on a factory function

每个对象都保持其状态。通过其具有getter,setter和行级逻辑的实例。 对于100个对象的表。我有一个控制器和100个实例。(每个对象一个)

现在我在想是否有行级控制器是有意义的。 因此,如果表中有100个对象,则会有101个控制器。其中包含100个对象。 (100行级,1个表级)

这将允许我维护控制器中每个对象的视图相关逻辑,而不是工厂实例。

我是否应该了解任何性能因素?或者模式不好?我想知道您对ng-repeat中使用控制器的反馈意见吗?

1 个答案:

答案 0 :(得分:1)

您在询问ng-repeat Angular结构中的嵌套控制器是否是个好主意。具体来说,您要问的是,对于100个对象中的每一个,您是否应该使用不同的控制器。你打算在&#34;循环&#34;中创建。不幸的是,答案是&#34;它取决于&#34;。有时这是一个好主意,例如当&#34;对象&#34;你提到的实际上是使用ng-include动态包含的整页。在这种情况下,为每个页面设置一个控制器可能是一件好事,特别是如果每​​个子页面具有不同的功能。其他时候,这是一个可怕的想法,例如当ng-repeat位于<select>标记上并且您迭代的对象是<option>时。在这种情况下,每个<option>的控制器几乎总是不必要的,特别是当你有100时。你可以用内部控制器做任何事情,你可以用另一种方式做,或者在外部控制器中用更少的工作。< / p>

至于性能问题,如果您在网站上创建100个内容,controller可能不是您最大的瓶颈。