我们应该使用ng-blur和ng-changes吗?

aft*_*tab 4 javascript angularjs

我有一个AngularJS的关注ng-changeng-blur,所以我想与专家什么是使用他们,当我们更新表单值以正确的方式进行确认.

  1. 我在下面的代码中有一个下拉列表,我想overrideBusinessDec()在用户更改下拉列表值时执行.有了当前的实现,因为ng-blur当我们点击表单时就会发生这种情况.我可以通过ng-blur从字段中删除来快速修复,它将按预期工作.
  2. 另一种情况:当您处于编辑状态时,它会填充值,但如果我不在ng-blur该字段上添加,则不会启用该表单.我不知道如何解决这个问题.

有解决方案可以解决这两个问题吗?

<!-- main.html -->
<div>
    <select kendo-drop-down-list k-data-value-field="'id'"
        k-data-text-field="'text'" k-option-label="'Select'"
        k-data-source="ctrlEffOptions"
        ng-disabled="!processRating.controlEffectivenessRatingComputeKey"
        ng-model="processRating.controlEffectivenessRatingOverrideKey"
        ng-change="overrideBusinessDec()" id="controlEffBusiness" required ng-model-options="{updateOn: 'blur'}">
    </select>
</div>
Run Code Online (Sandbox Code Playgroud)

Kri*_*ján 5

ng-change当元素的值发生变化时触发,因此对于您的下拉列表是一个不错的选择.当你想要在输入时发生某些事情时,它也是文本字段的一个很好的选择,比如自动完成.如果要等待用户完成并离开文本字段,请使用on-blur,当字段失去焦点时将触发.

on-blur不会影响您的表单字段是否已启用.你必须做其他事情才能造成这种情况.

  • 每次击键都会触发"ng-change",因为它是由"ng-model"变化触发的.查看[docs](https://docs.angularjs.org/api/ng/directive/ngChange)和[概念证明](http://plnkr.co/edit/MqoZ619uhYgPmd1RaiZy). (5认同)