Angularjs ng模糊模型';s的更新值在事件中不可用
我使用ng模型选项来防止文本输入的模型在焦点丢失之前被更新。那部分都有用。但是,我需要在文本输入失去焦点和模型更新后处理事件。在这种情况下,我需要访问新模型的更新值,而不是旧模型 我试图使用ng blur事件,但是,在我的处理程序中,该值是旧值,而不是输入的新值。是我做错了什么,还是有更好的方法在文本输入失去焦点后获取新提交的模型值Angularjs ng模糊模型';s的更新值在事件中不可用,angularjs,Angularjs,我使用ng模型选项来防止文本输入的模型在焦点丢失之前被更新。那部分都有用。但是,我需要在文本输入失去焦点和模型更新后处理事件。在这种情况下,我需要访问新模型的更新值,而不是旧模型 我试图使用ng blur事件,但是,在我的处理程序中,该值是旧值,而不是输入的新值。是我做错了什么,还是有更好的方法在文本输入失去焦点后获取新提交的模型值 <input type="text" ng-model-options="{ updateOn: 'blur', debounce:0 }" ng-model
<input type="text"
ng-model-options="{ updateOn: 'blur', debounce:0 }"
ng-model="vm.myModel.amount"
ng-blur="vm.handleBlurEvent(vm.myModel.amount)" />
vm.handleBlurEvent = function(item)
{
//alert(item.amount); //Old amount - not new amount entered
}
vm.handleBlurEvent=功能(项目)
{
//警报(item.amount);//旧金额-未输入新金额
}
用手表怎么样
模型更新后,您可以按如下方式执行逻辑:
$scope.$watch('vm.myModel.amount', function (newVal, oldVal) {
if (newVal != oldVal) {
//do your logic here.
}
}, true);
我和黛博斯的运气还不错 但要让你的东西在这里工作就是代码
<form name="amountForm" >
<input type="text" name="amount"
ng-model-options="{ updateOn: 'blur', debounce:0 }"
ng-model="vm.myModel.amount"
ng-blur="vm.handleBlurEvent()" />
</form>
vm.handleBlurEvent = function()
{
alert($scope.amountForm.amount.$viewValue);
}
vm.handleBlurEvent=函数()
{
警报($scope.amountForm.amount.amount.$viewValue);
}
享受…谢谢你的建议。实际上,我通过在ng model options的updateOn属性中添加1个选项来实现这一点。通过添加“默认值”,一切正常 ng model options=“{updateOn:'default blur}”是诀窍
<input type="text"
ng-model-options="{ updateOn: 'default blur' }"
ng-model="vm.myModel.amount"
ng-blur="vm.handleBlurEvent(vm.myModel.amount)" />
vm.handleBlurEvent = function(item)
{
//alert(item.amount); //new shows the NEW amount :-)
}
vm.handleBlurEvent=功能(项目)
{
//警报(item.amount);//新建显示新金额:-)
}
这是从以前的响应中修改的,延迟模型更新直到控制模糊,然后处理更改一次,无需反弹跳,模型值将在更改逻辑之前按预期设置
<input type="text"
ng-model-options="{ updateOn: 'blur' }"
ng-model="vm.myModel.amount"
ng-change="vm.handleChangeEvent(vm.myModel.amount)" />
vm.handleChangeEvent = function(item)
{
alert(item.amount); //new shows the NEW amount :-)
}
vm.handleChangeEvent=函数(项)
{
警报(item.amount);//新建显示新金额:-)
}
老问题,但我找到了另一种读取此值的方法,我无法延迟删除去抖动,对我有效的方法是使用超时:
$timeout(function(){
var amount = this.formName.amount.value;
});
我认为这是上面代码中的=ngModelController。我创建了一个plunkr来演示-在没有默认关键字的情况下尝试它,它将不起作用-使用它它会……感谢plunkr,它真的帮助了调试!不过,您的解决方案有点缺陷,在子系统中添加“default”表示“使用默认的updateOn操作”。我认为我们想要的是将模型的更新延迟到模糊事件,因此保留updateOn:“blur”并使用ng change来执行函数,而不是ng blur-这很有意义,而且是一个更干净的实现:-)这应该被视为反模式。它会导致“超时地狱”,在那里不可能轻松地对代码中的事件顺序进行推理。最终,采用这种反模式的组件的用户将被迫使用$timeout。从此开始了通往地狱的旅程。