Javascript 通过AngularJS中的ngClick将整个对象或只是属性从视图传递给控制器?
在AngularJS中,我们应该将整个对象或只是所需的属性从视图传递给控制器吗 例如: 查看Javascript 通过AngularJS中的ngClick将整个对象或只是属性从视图传递给控制器?,javascript,angularjs,Javascript,Angularjs,在AngularJS中,我们应该将整个对象或只是所需的属性从视图传递给控制器吗 例如: 查看 <div ng-repeat="house in town"> <div ng-click="listHome( house.id )"></div> </div> 假设控制器功能只需要house的id,而不需要整个对象 性能是否建议通过house.id,或者通过整个house对象,然后在控制器端拆分id。将对象传递给函数基本上是自由的 如果您只
<div ng-repeat="house in town">
<div ng-click="listHome( house.id )"></div>
</div>
假设控制器功能只需要house
的id
,而不需要整个对象
性能是否建议通过
house.id
,或者通过整个house
对象,然后在控制器端拆分id
。将对象传递给函数基本上是自由的
如果您只需要
id
,则只需传递id
。不是出于性能原因,而是出于清晰性原因。通常,只向函数传递您真正需要的参数是一种很好的做法。两种方法都不会对性能产生任何影响
我只想说,第一种情况是通过值传递的示例,第二种情况可以被视为通过引用传递的
让我们理解我说的话
当您只是将特定属性传递给方法(如ng click=“listHome(house.id)”
并在方法内部修改该houseid
时,这不会更改实际的对象引用,因为您刚刚传递了值
然而,如果您像传递ng click=“listHome(house)”
一样传递house
对象本身,那么您修改了任何对象属性,这样将更改传递给该方法的引用的实际对象
这取决于你,你应该遵循哪种方法。如果你只是想通过house
的id
&做些别的事情,那就去第一个方法
如果您想通过验证代码中的某些内容来更改对象的当前引用,请使用第二种方法
$scope.listHome = function (id) {
// do something with id
}