我们是否应该将整个对象或视图中所需的属性传递给AngularJS中的控制器?
例如:
查看
php artisan clear-compiled
控制器
<div ng-repeat="house in town">
<div ng-click="listHome( house.id )"></div>
</div>
假设控制器功能只需要$scope.listHome = function (id) {
// do something with id
}
id
而不是整个对象。
性能是否可以传递house
,或传递整个house.id
对象,然后在控制器端拆分house
?
答案 0 :(得分:2)
两种方式都不会对性能产生任何影响。
我只想说第一个案例就是pass by value
&amp;的例子。第二个可以被视为pass by reference
。
当您将特定属性传递给ng-click="listHome(house.id)"
之类的方法并在方法中修改houseid
时,这不会更改实际的对象引用,因为您只是传递了值。
然而,如果您传递house
对象本身,如ng-click="listHome(house)"
&amp;然后你修改了任何对象属性,这样就会改变传递给该方法的实际对象。
它取决于你,遵循哪种方法。如果你只想通过id
的{{1}}&amp;为第一种方法做点什么。
如果您想通过验证代码中的内容来更改对象的当前引用,请转到第二种方法。
答案 1 :(得分:1)
表现几乎不会产生真正的影响。将对象传递给函数基本上是免费的。
如果您只需要id
,则只需传递id
。不是出于性能原因,而是出于清晰的原因。通常一个好的做法是只将你真正需要的参数传递给函数。