通过AngularJS中的ngClick将整个对象或只是属性从视图传递到控制器?

时间:2016-04-09 09:48:20

标签: javascript angularjs

我们是否应该将整个对象或视图中所需的属性传递给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

2 个答案:

答案 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。不是出于性能原因,而是出于清晰的原因。通常一个好的做法是只将你真正需要的参数传递给函数。