输入更改的ngChange由select更改

时间:2016-07-09 12:06:27

标签: angularjs angularjs-ng-change

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

        <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指令:
因为当用户选择另一个母料时,它不会触发onMasterbPercentageChange功能。

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

我的目标是:
用户选择母料,然后他可以看到母料的属性(百分比)进入禁用的输入字段,当这一个更改时,onMasterbPercentageChange功能被触发。

enter image description here

1 个答案:

答案 0 :(得分:2)

ngChange指令不适用于 disable / readonly 输入,因为仅在输入值的更改导致将新值提交给模型时才会对其进行评估。因此,由于您是以编程方式更改值而未向此模型键入任何内容,因此不会调用ngChange

以下是从docs中提取的更多部分:

    ngChange将不会被评估:

  • 如果$ parsers转换管道返回的值没有改变
  •   
  • 如果输入继续无效,因为模型将保持为空
  •   
  • 如果以编程方式更改模型而不是更改输入值
  • 因此,为了实现您的目标,您必须将<{1}}移至您的ng-change

    我希望它有所帮助。