将函数结果绑定到角度重复

时间:2014-07-24 20:25:42

标签: angularjs performance angular-services

我的$scope中有一个服务实例,并在ng-repeat

中查看其结果

在控制器中:

$scope.svc = MyService;

在模板中:

<tr ng-repeat="items in svc.getAll()">
    <!-- ... -->
    <td><button ng-click="svc.remove($index)">X</button></td>
</tr>

它很方便,因此我可以直接将ng-click指向服务方法,而不需要愚蠢的包装器。但是并没有使Angular引擎的工作效率低于它绑定到数组的效果吗?我跟踪了get次来电,每次$scope次更改都会触发2次。它并不多,但可能存在以这种方式使用ng-repeat的任何奇怪的陷阱?

1 个答案:

答案 0 :(得分:1)

不,不应该有任何真正的性能影响。由于数据绑定,重复中的大多数资源都是必需的。

但是直接使用数组时也会进行数据绑定。它是直接包含还是由函数返回并不重要。唯一的开销应该是函数调用和数组的返回,但这可以忽略不计。

但是,我建议不要将服务直接绑定到控制器,这是不好的做法。考虑您在模板中多次使用服务函数,然后您决定重命名该函数 - 您还必须多次更改它,而不仅仅是在适当的包装函数中更改一次。此外,您将自动将所有服务功能公开给模板,尽管您可能只需要一个子集(即如果您有一个初始化函数,在控制器中调用,您很可能不希望在模板中再次调用它)。