Angularjs ng click=function()在ng reapeat中是如何工作的?它是否创建了范围函数的多个引用?

Angularjs ng click=function()在ng reapeat中是如何工作的?它是否创建了范围函数的多个引用?,angularjs,angularjs-scope,angularjs-ng-repeat,oneway,Angularjs,Angularjs Scope,Angularjs Ng Repeat,Oneway,我有一个ng repeat over 2000 employees数据,它以行的形式显示,在每个重复的行/块中,我有一个函数,它将工资信息传递给指令进行一些处理。我正在ng click=“calcSalary(emp)”上绑定函数。 现在我的问题是ng click=“calcSalary(emp)”是否会被创建2000次?后端将存储2000个不同的引用?将创建2000个calcSalary()函数并附加到作用域中吗?演出怎么样? 我们是否可以只写ng click=“calcSalary(emp)

我有一个ng repeat over 2000 employees数据,它以行的形式显示,在每个重复的行/块中,我有一个函数,它将工资信息传递给指令进行一些处理。我正在ng click=“calcSalary(emp)”上绑定函数。 现在我的问题是ng click=“calcSalary(emp)”是否会被创建2000次?后端将存储2000个不同的引用?将创建2000个calcSalary()函数并附加到作用域中吗?演出怎么样?
我们是否可以只写ng click=“calcSalary(emp)”一行,并根据单击的特定行传递员工数据?

否,它没有任何性能问题!即使您在ng repeat内部创建,它也会被创建n次,但只会实例化一次,并在单击时产生影响


了解它

calcSalary只是控制器中的一个功能,因此在前端它只是一个参考。一旦在循环中单击ng,它就会被创建和实例化,当然元素将被创建n次,函数调用将被创建n次。这是循环中任何元素的工作方式。我不认为你正在创建函数n次,这是正常的行为。如果你想改变任何东西,这完全取决于你的要求。最好在控制器中定义一次的循环
calcSalary
内找到另一种避免这些调用的方法。每次单击该按钮并传递参数时都会调用它。若要添加到上述点,ng-repeat将创建2000个实例。是的,这是真的,并且每个实例都有一个独立的作用域(即每行自己的作用域)但性能不会降低,因为重复实例的生成发生在编译阶段而不是链接阶段。