输入上的 ngChange 由 select 更改

ngChange on input changed by a select

我有一个简单的 select 输入字段,用户可以在其中选择一个选项:

        <select class="form-control" id="calc-masterbatchCode"
            ng-options="masterbatch as masterbatch.code for masterbatch in masterbatches"
            ng-model="$parent.materialTAB.selectedMasterbatch">
        </select>

如您所见,selectedMasterbatch对象存储在父控制器中。

然后我有一个禁用的输入字段以显示 selectedMasterBatch 的 属性:

<input type="text" class="form-control" id="calc-masterbatchPercentage"
                    ng-model="$parent.materialTAB.selectedMasterbatch.percentage"
                    ng-change="onMasterbPercentageChange()">

有效,但问题是ngChange指令:
因为当用户 select 另一个母料时它不会触发 onMasterbPercentageChange 功能。

触发该功能的唯一方法是在 calc-masterbatchParcentage 输入字段中手动输入内容。

我的目标是:
用户 select 母料,然后他可以在禁用的输入字段中看到母料的 属性(百分比),并且当此更改时,onMasterbPercentageChange 功能被触发。

ngChange 指令不适用于 disable/readonly 输入,因为它仅在输入值的变化导致新值被计算时才被评估致力于模型。因此,由于您以编程方式更改值并且未向该模型键入任何内容,因此它不会调用 ngChange

这里是从docs中摘录的部分:

    ngChange 将不会被评估:

  • 如果从 $parsers 转换管道返回的值没有改变
  • 如果输入继续无效,因为模型将保持为空
  • 如果以编程方式更改模型而不是通过更改输入值
  • 因此,要实现您想要的效果,您必须您的ng-change移动到您的<select>

    希望对您有所帮助。