AngularJS-为什么在更新模型之前调用ng更改?

AngularJS-为什么在更新模型之前调用ng更改?,angularjs,angularjs-ng-change,Angularjs,Angularjs Ng Change,请参阅以下plnkr: 第一个标准select按预期工作(至少与我预期的一样),这意味着在模型更新后调用ng change。但当我创建一个具有隔离作用域的指令时,似乎在更新模型之前调用了ng change。很明显,我有些误解 情况非常类似于plnkr中的示例的问题是,您使用change:'&'将change函数作为与父作用域的绑定传递给隔离作用域。 通过使用&函数将作为父级上下文中的表达式进行求值,并在更改模型之前对其进行求值(如果没有作为参数绑定到模型) 有两种方法可以更改示例以使其正常工作:

请参阅以下plnkr:

第一个标准select按预期工作(至少与我预期的一样),这意味着在模型更新后调用ng change。但当我创建一个具有隔离作用域的指令时,似乎在更新模型之前调用了ng change。很明显,我有些误解


情况非常类似于

plnkr中的示例的问题是,您使用change:'&'将change函数作为与父作用域的绑定传递给隔离作用域。 通过使用&函数将作为父级上下文中的表达式进行求值,并在更改模型之前对其进行求值(如果没有作为参数绑定到模型)

有两种方法可以更改示例以使其正常工作:

  • 您可以在指令中使用以下更改定义隔离范围:“=”定义

  • 您可以按原样使用它,但可以使用参数调用父引用函数。 对于第二个例子,这里有一个很好的解释: